From 34e214d0df4e5937a9a4baaeb30570faa37ef7b5 Mon Sep 17 00:00:00 2001 From: JC Brand Date: Tue, 29 Aug 2017 13:28:34 +0200 Subject: [PATCH] New release 3.2.1 --- CHANGES.md | 2 +- COPYRIGHT | 2 +- Makefile | 3 +- dist/converse-mobile.js | 5623 ++++++++++++------------ dist/converse.js | 6027 +++++++++++++------------- dist/inverse.js | 5931 +++++++++++++------------ dist/locales.js | 4 +- docs/source/conf.py | 4 +- index.html | 4 +- locale/af/LC_MESSAGES/converse.po | 302 +- locale/ca/LC_MESSAGES/converse.po | 302 +- locale/converse.pot | 304 +- locale/de/LC_MESSAGES/converse.po | 302 +- locale/es/LC_MESSAGES/converse.po | 302 +- locale/fr/LC_MESSAGES/converse.po | 302 +- locale/he/LC_MESSAGES/converse.po | 302 +- locale/hu/LC_MESSAGES/converse.po | 302 +- locale/id/LC_MESSAGES/converse.po | 302 +- locale/it/LC_MESSAGES/converse.po | 302 +- locale/ja/LC_MESSAGES/converse.po | 302 +- locale/nb/LC_MESSAGES/converse.po | 302 +- locale/nl/LC_MESSAGES/converse.po | 302 +- locale/pl/LC_MESSAGES/converse.po | 302 +- locale/pt_BR/LC_MESSAGES/converse.po | 302 +- locale/ru/LC_MESSAGES/converse.po | 302 +- locale/uk/LC_MESSAGES/converse.po | 302 +- locale/zh/LC_MESSAGES/converse.po | 302 +- package-lock.json | 5660 +++++++++++++++++------- package.json | 2 +- src/start.frag | 2 +- 30 files changed, 15977 insertions(+), 12725 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index f24d686d75..a42ba47adb 100755 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,6 @@ # Changelog -## 3.2.1 (Unreleased) +## 3.2.1 (2017-08-29) ### Bugfixes - Various IE11 fixes. diff --git a/COPYRIGHT b/COPYRIGHT index dd7773442c..cdbe9ba9b1 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -2,7 +2,7 @@ * * An XMPP chat client that runs in the browser. * - * Version: 3.2.0-rc + * Version: 3.2.1 * * Copyright: JC Brand 2012-2017 * Except for 3rd party dependencies. diff --git a/Makefile b/Makefile index 84689fdced..1ced655048 100644 --- a/Makefile +++ b/Makefile @@ -61,7 +61,7 @@ serve_bg: dev ######################################################################## ## Translation machinery -GETTEXT = xgettext --language="JavaScript" --keyword=__ --keyword=___ --from-code=UTF-8 --output=locale/converse.pot src/*.js --package-name=Converse.js --copyright-holder="Jan-Carel Brand" --package-version=3.2.0-rc -c +GETTEXT = xgettext --language="JavaScript" --keyword=__ --keyword=___ --from-code=UTF-8 --output=locale/converse.pot src/*.js --package-name=Converse.js --copyright-holder="Jan-Carel Brand" --package-version=3.2.1 -c .PHONY: pot pot: @@ -83,7 +83,6 @@ release: $(SED) -ri s/Version:\ [0-9]\+\.[0-9]\+\.[0-9]\+/Version:\ $(VERSION)/ COPYRIGHT $(SED) -ri s/Version:\ [0-9]\+\.[0-9]\+\.[0-9]\+/Version:\ $(VERSION)/ src/start.frag $(SED) -ri s/Project-Id-Version:\ Converse\.js\ [0-9]\+\.[0-9]\+\.[0-9]\+/Project-Id-Version:\ Converse.js\ $(VERSION)/ locale/converse.pot - $(SED) -ri s/\"version\":\ \"[0-9]\+\.[0-9]\+\.[0-9]\+\"/\"version\":\ \"$(VERSION)\"/ bower.json $(SED) -ri s/\"version\":\ \"[0-9]\+\.[0-9]\+\.[0-9]\+\"/\"version\":\ \"$(VERSION)\"/ package.json $(SED) -ri s/--package-version=[0-9]\+\.[0-9]\+\.[0-9]\+/--package-version=$(VERSION)/ Makefile $(SED) -ri s/v[0-9]\+\.[0-9]\+\.[0-9]\+\.zip/v$(VERSION)\.zip/ index.html diff --git a/dist/converse-mobile.js b/dist/converse-mobile.js index 0fefd55f2f..6cb59ca475 100644 --- a/dist/converse-mobile.js +++ b/dist/converse-mobile.js @@ -2,7 +2,7 @@ * * An XMPP chat client that runs in the browser. * - * Version: 3.2.0-rc + * Version: 3.2.1 */ /* jshint ignore:start */ @@ -20864,1619 +20864,590 @@ define('lodash.noconflict',['lodash'], function (_) { return _.noConflict(); }); -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define('lodash.converter',[], factory); - else if(typeof exports === 'object') - exports["fp"] = factory(); - else - root["fp"] = factory(); -})(this, function() { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; +if (!String.prototype.includes) { + String.prototype.includes = function(search, start) { + 'use strict'; + if (typeof start !== 'number') { + start = 0; + } + if (start + search.length > this.length) { + return false; + } else { + return this.indexOf(search, start) !== -1; // eslint-disable-line lodash/prefer-includes + } + }; +} -/******/ // The require function -/******/ function __webpack_require__(moduleId) { +if (!String.prototype.endsWith) { + String.prototype.endsWith = function (searchString, position) { + var subjectString = this.toString(); + if (position === undefined || position > subjectString.length) { + position = subjectString.length; + } + position -= searchString.length; + var lastIndex = subjectString.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + }; +} -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) -/******/ return installedModules[moduleId].exports; +if (!String.prototype.startsWith) { + String.prototype.startsWith = function (searchString, position) { + position = position || 0; + return this.substr(position, searchString.length) === searchString; + }; +} -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false -/******/ }; +if (!String.prototype.splitOnce) { + String.prototype.splitOnce = function (delimiter) { + var components = this.split(delimiter); + return [components.shift(), components.join(delimiter)]; + }; +} -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +if (!String.prototype.trim) { + String.prototype.trim = function () { + return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); + }; +} +; +define("polyfill", function(){}); -/******/ // Flag the module as loaded -/******/ module.loaded = true; +/*! + * jQuery JavaScript Library v2.2.3 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-04-05T19:26Z + */ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } +(function( global, factory ) { + if ( typeof module === "object" && typeof module.exports === "object" ) { + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; +// Support: Firefox 18+ +// Can't be in strict mode, several libs including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +//"use strict"; +var arr = []; -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; +var document = window.document; -/******/ // Load entry module and return exports -/******/ return __webpack_require__(0); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ function(module, exports, __webpack_require__) { +var slice = arr.slice; - var baseConvert = __webpack_require__(1); +var concat = arr.concat; - /** - * Converts `lodash` to an immutable auto-curried iteratee-first data-last - * version with conversion `options` applied. - * - * @param {Function} lodash The lodash function to convert. - * @param {Object} [options] The options object. See `baseConvert` for more details. - * @returns {Function} Returns the converted `lodash`. - */ - function browserConvert(lodash, options) { - return baseConvert(lodash, lodash, options); - } +var push = arr.push; - if (typeof _ == 'function' && typeof _.runInContext == 'function') { - // XXX: Customization in order to be able to run both _ and fp in the - // non-AMD usecase. - fp = browserConvert(_.runInContext()); - } - module.exports = browserConvert; +var indexOf = arr.indexOf; +var class2type = {}; -/***/ }, -/* 1 */ -/***/ function(module, exports, __webpack_require__) { +var toString = class2type.toString; - var mapping = __webpack_require__(2), - fallbackHolder = __webpack_require__(3); +var hasOwn = class2type.hasOwnProperty; - /** Built-in value reference. */ - var push = Array.prototype.push; +var support = {}; - /** - * Creates a function, with an arity of `n`, that invokes `func` with the - * arguments it receives. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} n The arity of the new function. - * @returns {Function} Returns the new function. - */ - function baseArity(func, n) { - return n == 2 - ? function(a, b) { return func.apply(undefined, arguments); } - : function(a) { return func.apply(undefined, arguments); }; - } - /** - * Creates a function that invokes `func`, with up to `n` arguments, ignoring - * any additional arguments. - * - * @private - * @param {Function} func The function to cap arguments for. - * @param {number} n The arity cap. - * @returns {Function} Returns the new function. - */ - function baseAry(func, n) { - return n == 2 - ? function(a, b) { return func(a, b); } - : function(a) { return func(a); }; - } - /** - * Creates a clone of `array`. - * - * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the cloned array. - */ - function cloneArray(array) { - var length = array ? array.length : 0, - result = Array(length); +var + version = "2.2.3", - while (length--) { - result[length] = array[length]; - } - return result; - } + // Define a local copy of jQuery + jQuery = function( selector, context ) { - /** - * Creates a function that clones a given object using the assignment `func`. - * - * @private - * @param {Function} func The assignment function. - * @returns {Function} Returns the new cloner function. - */ - function createCloner(func) { - return function(object) { - return func({}, object); - }; - } + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, - /** - * A specialized version of `_.spread` which flattens the spread array into - * the arguments of the invoked `func`. - * - * @private - * @param {Function} func The function to spread arguments over. - * @param {number} start The start position of the spread. - * @returns {Function} Returns the new function. - */ - function flatSpread(func, start) { - return function() { - var length = arguments.length, - lastIndex = length - 1, - args = Array(length); + // Support: Android<4.1 + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - while (length--) { - args[length] = arguments[length]; - } - var array = args[start], - otherArgs = args.slice(0, start); + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, - if (array) { - push.apply(otherArgs, array); - } - if (start != lastIndex) { - push.apply(otherArgs, args.slice(start + 1)); - } - return func.apply(this, otherArgs); - }; - } + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; - /** - * Creates a function that wraps `func` and uses `cloner` to clone the first - * argument it receives. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} cloner The function to clone arguments. - * @returns {Function} Returns the new immutable function. - */ - function wrapImmutable(func, cloner) { - return function() { - var length = arguments.length; - if (!length) { - return; - } - var args = Array(length); - while (length--) { - args[length] = arguments[length]; - } - var result = args[0] = cloner.apply(undefined, args); - func.apply(undefined, args); - return result; - }; - } +jQuery.fn = jQuery.prototype = { - /** - * The base implementation of `convert` which accepts a `util` object of methods - * required to perform conversions. - * - * @param {Object} util The util object. - * @param {string} name The name of the function to convert. - * @param {Function} func The function to convert. - * @param {Object} [options] The options object. - * @param {boolean} [options.cap=true] Specify capping iteratee arguments. - * @param {boolean} [options.curry=true] Specify currying. - * @param {boolean} [options.fixed=true] Specify fixed arity. - * @param {boolean} [options.immutable=true] Specify immutable operations. - * @param {boolean} [options.rearg=true] Specify rearranging arguments. - * @returns {Function|Object} Returns the converted function or object. - */ - function baseConvert(util, name, func, options) { - var setPlaceholder, - isLib = typeof name == 'function', - isObj = name === Object(name); + // The current version of jQuery being used + jquery: version, - if (isObj) { - options = func; - func = name; - name = undefined; - } - if (func == null) { - throw new TypeError; - } - options || (options = {}); + constructor: jQuery, - var config = { - 'cap': 'cap' in options ? options.cap : true, - 'curry': 'curry' in options ? options.curry : true, - 'fixed': 'fixed' in options ? options.fixed : true, - 'immutable': 'immutable' in options ? options.immutable : true, - 'rearg': 'rearg' in options ? options.rearg : true - }; + // Start with an empty selector + selector: "", - var forceCurry = ('curry' in options) && options.curry, - forceFixed = ('fixed' in options) && options.fixed, - forceRearg = ('rearg' in options) && options.rearg, - placeholder = isLib ? func : fallbackHolder, - pristine = isLib ? func.runInContext() : undefined; + // The default length of a jQuery object is 0 + length: 0, - var helpers = isLib ? func : { - 'ary': util.ary, - 'assign': util.assign, - 'clone': util.clone, - 'curry': util.curry, - 'forEach': util.forEach, - 'isArray': util.isArray, - 'isFunction': util.isFunction, - 'iteratee': util.iteratee, - 'keys': util.keys, - 'rearg': util.rearg, - 'toInteger': util.toInteger, - 'toPath': util.toPath - }; + toArray: function() { + return slice.call( this ); + }, - var ary = helpers.ary, - assign = helpers.assign, - clone = helpers.clone, - curry = helpers.curry, - each = helpers.forEach, - isArray = helpers.isArray, - isFunction = helpers.isFunction, - keys = helpers.keys, - rearg = helpers.rearg, - toInteger = helpers.toInteger, - toPath = helpers.toPath; + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num != null ? - var aryMethodKeys = keys(mapping.aryMethod); + // Return just the one element from the set + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - var wrappers = { - 'castArray': function(castArray) { - return function() { - var value = arguments[0]; - return isArray(value) - ? castArray(cloneArray(value)) - : castArray.apply(undefined, arguments); - }; - }, - 'iteratee': function(iteratee) { - return function() { - var func = arguments[0], - arity = arguments[1], - result = iteratee(func, arity), - length = result.length; + // Return all the elements in a clean array + slice.call( this ); + }, - if (config.cap && typeof arity == 'number') { - arity = arity > 2 ? (arity - 2) : 1; - return (length && length <= arity) ? result : baseAry(result, arity); - } - return result; - }; - }, - 'mixin': function(mixin) { - return function(source) { - var func = this; - if (!isFunction(func)) { - return mixin(func, Object(source)); - } - var pairs = []; - each(keys(source), function(key) { - if (isFunction(source[key])) { - pairs.push([key, func.prototype[key]]); - } - }); + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { - mixin(func, Object(source)); + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); - each(pairs, function(pair) { - var value = pair[1]; - if (isFunction(value)) { - func.prototype[pair[0]] = value; - } else { - delete func.prototype[pair[0]]; - } - }); - return func; - }; - }, - 'nthArg': function(nthArg) { - return function(n) { - var arity = n < 0 ? 1 : (toInteger(n) + 1); - return curry(nthArg(n), arity); - }; - }, - 'rearg': function(rearg) { - return function(func, indexes) { - var arity = indexes ? indexes.length : 0; - return curry(rearg(func, indexes), arity); - }; - }, - 'runInContext': function(runInContext) { - return function(context) { - return baseConvert(util, runInContext(context), options); - }; - } - }; + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; - /*--------------------------------------------------------------------------*/ + // Return the newly-formed element set + return ret; + }, - /** - * Casts `func` to a function with an arity capped iteratee if needed. - * - * @private - * @param {string} name The name of the function to inspect. - * @param {Function} func The function to inspect. - * @returns {Function} Returns the cast function. - */ - function castCap(name, func) { - if (config.cap) { - var indexes = mapping.iterateeRearg[name]; - if (indexes) { - return iterateeRearg(func, indexes); - } - var n = !isLib && mapping.iterateeAry[name]; - if (n) { - return iterateeAry(func, n); - } - } - return func; - } + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, - /** - * Casts `func` to a curried function if needed. - * - * @private - * @param {string} name The name of the function to inspect. - * @param {Function} func The function to inspect. - * @param {number} n The arity of `func`. - * @returns {Function} Returns the cast function. - */ - function castCurry(name, func, n) { - return (forceCurry || (config.curry && n > 1)) - ? curry(func, n) - : func; - } + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, - /** - * Casts `func` to a fixed arity function if needed. - * - * @private - * @param {string} name The name of the function to inspect. - * @param {Function} func The function to inspect. - * @param {number} n The arity cap. - * @returns {Function} Returns the cast function. - */ - function castFixed(name, func, n) { - if (config.fixed && (forceFixed || !mapping.skipFixed[name])) { - var data = mapping.methodSpread[name], - start = data && data.start; + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, - return start === undefined ? ary(func, n) : flatSpread(func, start); - } - return func; - } + first: function() { + return this.eq( 0 ); + }, - /** - * Casts `func` to an rearged function if needed. - * - * @private - * @param {string} name The name of the function to inspect. - * @param {Function} func The function to inspect. - * @param {number} n The arity of `func`. - * @returns {Function} Returns the cast function. - */ - function castRearg(name, func, n) { - return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name])) - ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n]) - : func; - } + last: function() { + return this.eq( -1 ); + }, - /** - * Creates a clone of `object` by `path`. - * - * @private - * @param {Object} object The object to clone. - * @param {Array|string} path The path to clone by. - * @returns {Object} Returns the cloned object. - */ - function cloneByPath(object, path) { - path = toPath(path); + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, - var index = -1, - length = path.length, - lastIndex = length - 1, - result = clone(Object(object)), - nested = result; + end: function() { + return this.prevObject || this.constructor(); + }, - while (nested != null && ++index < length) { - var key = path[index], - value = nested[key]; + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; - if (value != null) { - nested[path[index]] = clone(index == lastIndex ? value : Object(value)); - } - nested = nested[key]; - } - return result; - } +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; - /** - * Converts `lodash` to an immutable auto-curried iteratee-first data-last - * version with conversion `options` applied. - * - * @param {Object} [options] The options object. See `baseConvert` for more details. - * @returns {Function} Returns the converted `lodash`. - */ - function convertLib(options) { - return _.runInContext.convert(options)(undefined); - } + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; - /** - * Create a converter function for `func` of `name`. - * - * @param {string} name The name of the function to convert. - * @param {Function} func The function to convert. - * @returns {Function} Returns the new converter function. - */ - function createConverter(name, func) { - var realName = mapping.aliasToReal[name] || name, - methodName = mapping.remap[realName] || realName, - oldOptions = options; + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } - return function(options) { - var newUtil = isLib ? pristine : helpers, - newFunc = isLib ? pristine[methodName] : func, - newOptions = assign(assign({}, oldOptions), options); + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } - return baseConvert(newUtil, realName, newFunc, newOptions); - }; - } + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } - /** - * Creates a function that wraps `func` to invoke its iteratee, with up to `n` - * arguments, ignoring any additional arguments. - * - * @private - * @param {Function} func The function to cap iteratee arguments for. - * @param {number} n The arity cap. - * @returns {Function} Returns the new function. - */ - function iterateeAry(func, n) { - return overArg(func, function(func) { - return typeof func == 'function' ? baseAry(func, n) : func; - }); - } + for ( ; i < length; i++ ) { - /** - * Creates a function that wraps `func` to invoke its iteratee with arguments - * arranged according to the specified `indexes` where the argument value at - * the first index is provided as the first argument, the argument value at - * the second index is provided as the second argument, and so on. - * - * @private - * @param {Function} func The function to rearrange iteratee arguments for. - * @param {number[]} indexes The arranged argument indexes. - * @returns {Function} Returns the new function. - */ - function iterateeRearg(func, indexes) { - return overArg(func, function(func) { - var n = indexes.length; - return baseArity(rearg(baseAry(func, n), indexes), n); - }); - } + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { - /** - * Creates a function that invokes `func` with its first argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ - function overArg(func, transform) { - return function() { - var length = arguments.length; - if (!length) { - return func(); - } - var args = Array(length); - while (length--) { - args[length] = arguments[length]; - } - var index = config.rearg ? 0 : (length - 1); - args[index] = transform(args[index]); - return func.apply(undefined, args); - }; - } + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; - /** - * Creates a function that wraps `func` and applys the conversions - * rules by `name`. - * - * @private - * @param {string} name The name of the function to wrap. - * @param {Function} func The function to wrap. - * @returns {Function} Returns the converted function. - */ - function wrap(name, func) { - var result, - realName = mapping.aliasToReal[name] || name, - wrapped = func, - wrapper = wrappers[realName]; + // Prevent never-ending loop + if ( target === copy ) { + continue; + } - if (wrapper) { - wrapped = wrapper(func); - } - else if (config.immutable) { - if (mapping.mutate.array[realName]) { - wrapped = wrapImmutable(func, cloneArray); - } - else if (mapping.mutate.object[realName]) { - wrapped = wrapImmutable(func, createCloner(func)); - } - else if (mapping.mutate.set[realName]) { - wrapped = wrapImmutable(func, cloneByPath); - } - } - each(aryMethodKeys, function(aryKey) { - each(mapping.aryMethod[aryKey], function(otherName) { - if (realName == otherName) { - var data = mapping.methodSpread[realName], - afterRearg = data && data.afterRearg; + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = jQuery.isArray( copy ) ) ) ) { - result = afterRearg - ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey) - : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey); + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray( src ) ? src : []; - result = castCap(realName, result); - result = castCurry(realName, result, aryKey); - return false; - } - }); - return !result; - }); + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } - result || (result = wrapped); - if (result == func) { - result = forceCurry ? curry(result, 1) : function() { - return func.apply(this, arguments); - }; - } - result.convert = createConverter(realName, func); - if (mapping.placeholder[realName]) { - setPlaceholder = true; - result.placeholder = func.placeholder = placeholder; - } - return result; - } + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); - /*--------------------------------------------------------------------------*/ + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } - if (!isObj) { - return wrap(name, func); - } - var _ = func; + // Return the modified object + return target; +}; - // Convert methods by ary cap. - var pairs = []; - each(aryMethodKeys, function(aryKey) { - each(mapping.aryMethod[aryKey], function(key) { - var func = _[mapping.remap[key] || key]; - if (func) { - pairs.push([key, wrap(key, func)]); - } - }); - }); +jQuery.extend( { - // Convert remaining methods. - each(keys(_), function(key) { - var func = _[key]; - if (typeof func == 'function') { - var length = pairs.length; - while (length--) { - if (pairs[length][0] == key) { - return; - } - } - func.convert = createConverter(key, func); - pairs.push([key, func]); - } - }); + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - // Assign to `_` leaving `_.prototype` unchanged to allow chaining. - each(pairs, function(pair) { - _[pair[0]] = pair[1]; - }); + // Assume jQuery is ready without the ready module + isReady: true, - _.convert = convertLib; - if (setPlaceholder) { - _.placeholder = placeholder; - } - // Assign aliases. - each(keys(_), function(key) { - each(mapping.realToAlias[key] || [], function(alias) { - _[alias] = _[key]; - }); - }); + error: function( msg ) { + throw new Error( msg ); + }, - return _; - } + noop: function() {}, - module.exports = baseConvert; + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + isArray: Array.isArray, -/***/ }, -/* 2 */ -/***/ function(module, exports) { + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, - /** Used to map aliases to their real names. */ - exports.aliasToReal = { + isNumeric: function( obj ) { - // Lodash aliases. - 'each': 'forEach', - 'eachRight': 'forEachRight', - 'entries': 'toPairs', - 'entriesIn': 'toPairsIn', - 'extend': 'assignIn', - 'extendAll': 'assignInAll', - 'extendAllWith': 'assignInAllWith', - 'extendWith': 'assignInWith', - 'first': 'head', + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + // adding 1 corrects loss of precision from parseFloat (#15100) + var realStringObj = obj && obj.toString(); + return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; + }, - // Methods that are curried variants of others. - 'conforms': 'conformsTo', - 'matches': 'isMatch', - 'property': 'get', + isPlainObject: function( obj ) { + var key; - // Ramda aliases. - '__': 'placeholder', - 'F': 'stubFalse', - 'T': 'stubTrue', - 'all': 'every', - 'allPass': 'overEvery', - 'always': 'constant', - 'any': 'some', - 'anyPass': 'overSome', - 'apply': 'spread', - 'assoc': 'set', - 'assocPath': 'set', - 'complement': 'negate', - 'compose': 'flowRight', - 'contains': 'includes', - 'dissoc': 'unset', - 'dissocPath': 'unset', - 'dropLast': 'dropRight', - 'dropLastWhile': 'dropRightWhile', - 'equals': 'isEqual', - 'identical': 'eq', - 'indexBy': 'keyBy', - 'init': 'initial', - 'invertObj': 'invert', - 'juxt': 'over', - 'omitAll': 'omit', - 'nAry': 'ary', - 'path': 'get', - 'pathEq': 'matchesProperty', - 'pathOr': 'getOr', - 'paths': 'at', - 'pickAll': 'pick', - 'pipe': 'flow', - 'pluck': 'map', - 'prop': 'get', - 'propEq': 'matchesProperty', - 'propOr': 'getOr', - 'props': 'at', - 'symmetricDifference': 'xor', - 'symmetricDifferenceBy': 'xorBy', - 'symmetricDifferenceWith': 'xorWith', - 'takeLast': 'takeRight', - 'takeLastWhile': 'takeRightWhile', - 'unapply': 'rest', - 'unnest': 'flatten', - 'useWith': 'overArgs', - 'where': 'conformsTo', - 'whereEq': 'isMatch', - 'zipObj': 'zipObject' - }; + // Not plain objects: + // - Any object or value whose internal [[Class]] property is not "[object Object]" + // - DOM nodes + // - window + if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } - /** Used to map ary to method names. */ - exports.aryMethod = { - '1': [ - 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create', - 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow', - 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll', - 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse', - 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart', - 'uniqueId', 'words', 'zipAll' - ], - '2': [ - 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith', - 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith', - 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN', - 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference', - 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq', - 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex', - 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach', - 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get', - 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection', - 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy', - 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty', - 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit', - 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial', - 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll', - 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove', - 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex', - 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy', - 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight', - 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars', - 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith', - 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject', - 'zipObjectDeep' - ], - '3': [ - 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith', - 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr', - 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith', - 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth', - 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd', - 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight', - 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy', - 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy', - 'xorWith', 'zipWith' - ], - '4': [ - 'fill', 'setWith', 'updateWith' - ] - }; + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call( obj, "constructor" ) && + !hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) { + return false; + } - /** Used to map ary to rearg configs. */ - exports.aryRearg = { - '2': [1, 0], - '3': [2, 0, 1], - '4': [3, 2, 0, 1] - }; + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own + for ( key in obj ) {} - /** Used to map method names to their iteratee ary. */ - exports.iterateeAry = { - 'dropRightWhile': 1, - 'dropWhile': 1, - 'every': 1, - 'filter': 1, - 'find': 1, - 'findFrom': 1, - 'findIndex': 1, - 'findIndexFrom': 1, - 'findKey': 1, - 'findLast': 1, - 'findLastFrom': 1, - 'findLastIndex': 1, - 'findLastIndexFrom': 1, - 'findLastKey': 1, - 'flatMap': 1, - 'flatMapDeep': 1, - 'flatMapDepth': 1, - 'forEach': 1, - 'forEachRight': 1, - 'forIn': 1, - 'forInRight': 1, - 'forOwn': 1, - 'forOwnRight': 1, - 'map': 1, - 'mapKeys': 1, - 'mapValues': 1, - 'partition': 1, - 'reduce': 2, - 'reduceRight': 2, - 'reject': 1, - 'remove': 1, - 'some': 1, - 'takeRightWhile': 1, - 'takeWhile': 1, - 'times': 1, - 'transform': 2 - }; + return key === undefined || hasOwn.call( obj, key ); + }, - /** Used to map method names to iteratee rearg configs. */ - exports.iterateeRearg = { - 'mapKeys': [1], - 'reduceRight': [1, 0] - }; + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, - /** Used to map method names to rearg configs. */ - exports.methodRearg = { - 'assignInAllWith': [1, 0], - 'assignInWith': [1, 2, 0], - 'assignAllWith': [1, 0], - 'assignWith': [1, 2, 0], - 'differenceBy': [1, 2, 0], - 'differenceWith': [1, 2, 0], - 'getOr': [2, 1, 0], - 'intersectionBy': [1, 2, 0], - 'intersectionWith': [1, 2, 0], - 'isEqualWith': [1, 2, 0], - 'isMatchWith': [2, 1, 0], - 'mergeAllWith': [1, 0], - 'mergeWith': [1, 2, 0], - 'padChars': [2, 1, 0], - 'padCharsEnd': [2, 1, 0], - 'padCharsStart': [2, 1, 0], - 'pullAllBy': [2, 1, 0], - 'pullAllWith': [2, 1, 0], - 'rangeStep': [1, 2, 0], - 'rangeStepRight': [1, 2, 0], - 'setWith': [3, 1, 2, 0], - 'sortedIndexBy': [2, 1, 0], - 'sortedLastIndexBy': [2, 1, 0], - 'unionBy': [1, 2, 0], - 'unionWith': [1, 2, 0], - 'updateWith': [3, 1, 2, 0], - 'xorBy': [1, 2, 0], - 'xorWith': [1, 2, 0], - 'zipWith': [1, 2, 0] - }; - - /** Used to map method names to spread configs. */ - exports.methodSpread = { - 'assignAll': { 'start': 0 }, - 'assignAllWith': { 'start': 0 }, - 'assignInAll': { 'start': 0 }, - 'assignInAllWith': { 'start': 0 }, - 'defaultsAll': { 'start': 0 }, - 'defaultsDeepAll': { 'start': 0 }, - 'invokeArgs': { 'start': 2 }, - 'invokeArgsMap': { 'start': 2 }, - 'mergeAll': { 'start': 0 }, - 'mergeAllWith': { 'start': 0 }, - 'partial': { 'start': 1 }, - 'partialRight': { 'start': 1 }, - 'without': { 'start': 1 }, - 'zipAll': { 'start': 0 } - }; - - /** Used to identify methods which mutate arrays or objects. */ - exports.mutate = { - 'array': { - 'fill': true, - 'pull': true, - 'pullAll': true, - 'pullAllBy': true, - 'pullAllWith': true, - 'pullAt': true, - 'remove': true, - 'reverse': true - }, - 'object': { - 'assign': true, - 'assignAll': true, - 'assignAllWith': true, - 'assignIn': true, - 'assignInAll': true, - 'assignInAllWith': true, - 'assignInWith': true, - 'assignWith': true, - 'defaults': true, - 'defaultsAll': true, - 'defaultsDeep': true, - 'defaultsDeepAll': true, - 'merge': true, - 'mergeAll': true, - 'mergeAllWith': true, - 'mergeWith': true, - }, - 'set': { - 'set': true, - 'setWith': true, - 'unset': true, - 'update': true, - 'updateWith': true - } - }; - - /** Used to track methods with placeholder support */ - exports.placeholder = { - 'bind': true, - 'bindKey': true, - 'curry': true, - 'curryRight': true, - 'partial': true, - 'partialRight': true - }; - - /** Used to map real names to their aliases. */ - exports.realToAlias = (function() { - var hasOwnProperty = Object.prototype.hasOwnProperty, - object = exports.aliasToReal, - result = {}; - - for (var key in object) { - var value = object[key]; - if (hasOwnProperty.call(result, value)) { - result[value].push(key); - } else { - result[value] = [key]; - } - } - return result; - }()); - - /** Used to map method names to other names. */ - exports.remap = { - 'assignAll': 'assign', - 'assignAllWith': 'assignWith', - 'assignInAll': 'assignIn', - 'assignInAllWith': 'assignInWith', - 'curryN': 'curry', - 'curryRightN': 'curryRight', - 'defaultsAll': 'defaults', - 'defaultsDeepAll': 'defaultsDeep', - 'findFrom': 'find', - 'findIndexFrom': 'findIndex', - 'findLastFrom': 'findLast', - 'findLastIndexFrom': 'findLastIndex', - 'getOr': 'get', - 'includesFrom': 'includes', - 'indexOfFrom': 'indexOf', - 'invokeArgs': 'invoke', - 'invokeArgsMap': 'invokeMap', - 'lastIndexOfFrom': 'lastIndexOf', - 'mergeAll': 'merge', - 'mergeAllWith': 'mergeWith', - 'padChars': 'pad', - 'padCharsEnd': 'padEnd', - 'padCharsStart': 'padStart', - 'propertyOf': 'get', - 'rangeStep': 'range', - 'rangeStepRight': 'rangeRight', - 'restFrom': 'rest', - 'spreadFrom': 'spread', - 'trimChars': 'trim', - 'trimCharsEnd': 'trimEnd', - 'trimCharsStart': 'trimStart', - 'zipAll': 'zip' - }; + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } - /** Used to track methods that skip fixing their arity. */ - exports.skipFixed = { - 'castArray': true, - 'flow': true, - 'flowRight': true, - 'iteratee': true, - 'mixin': true, - 'rearg': true, - 'runInContext': true - }; + // Support: Android<4.0, iOS<6 (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, - /** Used to track methods that skip rearranging arguments. */ - exports.skipRearg = { - 'add': true, - 'assign': true, - 'assignIn': true, - 'bind': true, - 'bindKey': true, - 'concat': true, - 'difference': true, - 'divide': true, - 'eq': true, - 'gt': true, - 'gte': true, - 'isEqual': true, - 'lt': true, - 'lte': true, - 'matchesProperty': true, - 'merge': true, - 'multiply': true, - 'overArgs': true, - 'partial': true, - 'partialRight': true, - 'propertyOf': true, - 'random': true, - 'range': true, - 'rangeRight': true, - 'subtract': true, - 'zip': true, - 'zipObject': true, - 'zipObjectDeep': true - }; + // Evaluates a script in a global context + globalEval: function( code ) { + var script, + indirect = eval; + code = jQuery.trim( code ); -/***/ }, -/* 3 */ -/***/ function(module, exports) { + if ( code ) { - /** - * The default argument placeholder value for methods. - * - * @type {Object} - */ - module.exports = {}; + // If the code includes a valid, prologue position + // strict mode pragma, execute code by injecting a + // script tag into the document. + if ( code.indexOf( "use strict" ) === 1 ) { + script = document.createElement( "script" ); + script.text = code; + document.head.appendChild( script ).parentNode.removeChild( script ); + } else { + // Otherwise, avoid the DOM node creation, insertion + // and removal by using an indirect global eval -/***/ } -/******/ ]) -}); -; + indirect( code ); + } + } + }, -if (!String.prototype.endsWith) { - String.prototype.endsWith = function (searchString, position) { - var subjectString = this.toString(); - if (position === undefined || position > subjectString.length) { - position = subjectString.length; - } - position -= searchString.length; - var lastIndex = subjectString.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - }; -} + // Convert dashed to camelCase; used by the css and data modules + // Support: IE9-11+ + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, -if (!String.prototype.startsWith) { - String.prototype.startsWith = function (searchString, position) { - position = position || 0; - return this.substr(position, searchString.length) === searchString; - }; -} + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, -if (!String.prototype.splitOnce) { - String.prototype.splitOnce = function (delimiter) { - var components = this.split(delimiter); - return [components.shift(), components.join(delimiter)]; - }; -} + each: function( obj, callback ) { + var length, i = 0; -if (!String.prototype.trim) { - String.prototype.trim = function () { - return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); - }; -} -; -define("polyfill", function(){}); + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } -/*! - * jQuery JavaScript Library v2.2.3 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2016-04-05T19:26Z - */ + return obj; + }, -(function( global, factory ) { + // Support: Android<4.1 + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper `window` - // is present, execute the factory and get jQuery. - // For environments that do not have a `window` with a `document` - // (such as Node.js), expose a factory as module.exports. - // This accentuates the need for the creation of a real `window`. - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info. - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } -// Support: Firefox 18+ -// Can't be in strict mode, several libs including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -//"use strict"; -var arr = []; + return ret; + }, -var document = window.document; + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, -var slice = arr.slice; + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; -var concat = arr.concat; + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } -var push = arr.push; + first.length = i; -var indexOf = arr.indexOf; + return first; + }, -var class2type = {}; + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; -var toString = class2type.toString; + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } -var hasOwn = class2type.hasOwnProperty; + return matches; + }, -var support = {}; + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + if ( value != null ) { + ret.push( value ); + } + } -var - version = "2.2.3", + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); - // Define a local copy of jQuery - jQuery = function( selector, context ) { + if ( value != null ) { + ret.push( value ); + } + } + } - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); + // Flatten any nested arrays + return concat.apply( [], ret ); }, - // Support: Android<4.1 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; + // A global GUID counter for objects + guid: 1, -jQuery.fn = jQuery.prototype = { + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; - // The current version of jQuery being used - jquery: version, + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } - constructor: jQuery, + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } - // Start with an empty selector - selector: "", + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; - // The default length of a jQuery object is 0 - length: 0, + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; - toArray: function() { - return slice.call( this ); + return proxy; }, - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? + now: Date.now, - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); - // Return all the elements in a clean array - slice.call( this ); - }, +// JSHint would error on this code due to the Symbol not being defined in ES5. +// Defining this global in .jshintrc would create a danger of using the global +// unguarded in another place, it seems safer to just disable JSHint for these +// three lines. +/* jshint ignore: start */ +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} +/* jshint ignore: end */ - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); +function isArrayLike( obj ) { - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - each: function( callback ) { - return jQuery.each( this, callback ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map( this, function( elem, i ) { - return callback.call( elem, i, elem ); - } ) ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: arr.sort, - splice: arr.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[ 0 ] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // Skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { - target = {}; - } - - // Extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - - // Only deal with non-null/undefined values - if ( ( options = arguments[ i ] ) != null ) { - - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject( copy ) || - ( copyIsArray = jQuery.isArray( copy ) ) ) ) { - - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray( src ) ? src : []; - - } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend( { - - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - isFunction: function( obj ) { - return jQuery.type( obj ) === "function"; - }, - - isArray: Array.isArray, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - var realStringObj = obj && obj.toString(); - return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; - }, - - isPlainObject: function( obj ) { - var key; - - // Not plain objects: - // - Any object or value whose internal [[Class]] property is not "[object Object]" - // - DOM nodes - // - window - if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call( obj, "constructor" ) && - !hasOwn.call( obj.constructor.prototype || {}, "isPrototypeOf" ) ) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android<4.0, iOS<6 (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - globalEval: function( code ) { - var script, - indirect = eval; - - code = jQuery.trim( code ); - - if ( code ) { - - // If the code includes a valid, prologue position - // strict mode pragma, execute code by injecting a - // script tag into the document. - if ( code.indexOf( "use strict" ) === 1 ) { - script = document.createElement( "script" ); - script.text = code; - document.head.appendChild( script ).parentNode.removeChild( script ); - } else { - - // Otherwise, avoid the DOM node creation, insertion - // and removal by using an indirect global eval - - indirect( code ); - } - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Support: IE9-11+ - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - each: function( obj, callback ) { - var length, i = 0; - - if ( isArrayLike( obj ) ) { - length = obj.length; - for ( ; i < length; i++ ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } else { - for ( i in obj ) { - if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { - break; - } - } - } - - return obj; - }, - - // Support: Android<4.1 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArrayLike( Object( arr ) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - return arr == null ? -1 : indexOf.call( arr, elem, i ); - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - for ( ; j < len; j++ ) { - first[ i++ ] = second[ j ]; - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var length, value, - i = 0, - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArrayLike( elems ) ) { - length = elems.length; - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -} ); - -// JSHint would error on this code due to the Symbol not being defined in ES5. -// Defining this global in .jshintrc would create a danger of using the global -// unguarded in another place, it seems safer to just disable JSHint for these -// three lines. -/* jshint ignore: start */ -if ( typeof Symbol === "function" ) { - jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; -} -/* jshint ignore: end */ - -// Populate the class2type map -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); - -function isArrayLike( obj ) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = !!obj && "length" in obj && obj.length, - type = jQuery.type( obj ); + // Support: iOS 8.2 (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); if ( type === "function" || jQuery.isWindow( obj ) ) { return false; @@ -33408,13 +32379,13 @@ define('text!af',[],function () { return '{\n "domain": "converse",\n "local define('text!ca',[],function () { return '{\n "domain": "converse",\n "locale_data": {\n "converse": {\n "": {\n "domain": "converse",\n "plural_forms": "nplurals=2; plural=(n != 1);",\n "lang": "ca"\n },\n "Bookmark this room": [\n null,\n ""\n ],\n "The name for this bookmark:": [\n null,\n ""\n ],\n "Would you like this room to be automatically joined upon startup?": [\n null,\n ""\n ],\n "What should your nickname for this room be?": [\n null,\n ""\n ],\n "Save": [\n null,\n "Desa"\n ],\n "Cancel": [\n null,\n "Cancel·la"\n ],\n "Bookmarks": [\n null,\n ""\n ],\n "Remove this bookmark": [\n null,\n ""\n ],\n "Show more information on this room": [\n null,\n "Mostra més informació d\'aquesta sala"\n ],\n "Click to open this room": [\n null,\n "Feu clic per obrir aquesta sala"\n ],\n "Close this chat box": [\n null,\n "Tanca aquest quadre del xat"\n ],\n "Personal message": [\n null,\n "Missatge personal"\n ],\n "Send": [\n null,\n ""\n ],\n "me": [\n null,\n "jo"\n ],\n "A very large message has been received.This might be due to an attack meant to degrade the chat performance.Output has been shortened.": [\n null,\n ""\n ],\n "Typing from another device": [\n null,\n ""\n ],\n "is typing": [\n null,\n "està escrivint"\n ],\n "Stopped typing on the other device": [\n null,\n ""\n ],\n "has stopped typing": [\n null,\n "ha deixat d\'escriure"\n ],\n "has gone away": [\n null,\n "ha marxat"\n ],\n "Show this menu": [\n null,\n "Mostra aquest menú"\n ],\n "Write in the third person": [\n null,\n "Escriu en tercera persona"\n ],\n "Remove messages": [\n null,\n "Elimina els missatges"\n ],\n "Are you sure you want to clear the messages from this chat box?": [\n null,\n "Segur que voleu esborrar els missatges d\'aquest quadre del xat?"\n ],\n "has gone offline": [\n null,\n "s\'ha desconnectat"\n ],\n "is busy": [\n null,\n "està ocupat"\n ],\n "Clear all messages": [\n null,\n "Esborra tots els missatges"\n ],\n "Insert a smiley": [\n null,\n "Insereix una cara somrient"\n ],\n "Start a call": [\n null,\n "Inicia una trucada"\n ],\n "Contacts": [\n null,\n "Contactes"\n ],\n "XMPP Username:": [\n null,\n "Nom d\'usuari XMPP:"\n ],\n "Password:": [\n null,\n "Contrasenya:"\n ],\n "Click here to log in anonymously": [\n null,\n "Feu clic aquí per iniciar la sessió de manera anònima"\n ],\n "Log In": [\n null,\n "Inicia la sessió"\n ],\n "user@server": [\n null,\n "usuari@servidor"\n ],\n "password": [\n null,\n "contrasenya"\n ],\n "Sign in": [\n null,\n "Inicia la sessió"\n ],\n "I am %1$s": [\n null,\n "Estic %1$s"\n ],\n "Click here to write a custom status message": [\n null,\n "Feu clic aquí per escriure un missatge d\'estat personalitzat"\n ],\n "Click to change your chat status": [\n null,\n "Feu clic per canviar l\'estat del xat"\n ],\n "Custom status": [\n null,\n "Estat personalitzat"\n ],\n "online": [\n null,\n "en línia"\n ],\n "busy": [\n null,\n "ocupat"\n ],\n "away for long": [\n null,\n "absent durant una estona"\n ],\n "away": [\n null,\n "absent"\n ],\n "offline": [\n null,\n "desconnectat"\n ],\n "Online": [\n null,\n "En línia"\n ],\n "Busy": [\n null,\n "Ocupat"\n ],\n "Away": [\n null,\n "Absent"\n ],\n "Offline": [\n null,\n "Desconnectat"\n ],\n "Log out": [\n null,\n "Tanca la sessió"\n ],\n "Click to add new chat contacts": [\n null,\n "Feu clic per afegir contactes nous al xat"\n ],\n "Add a contact": [\n null,\n "Afegeix un contacte"\n ],\n "Contact name": [\n null,\n "Nom del contacte"\n ],\n "Search": [\n null,\n "Cerca"\n ],\n "Add": [\n null,\n "Afegeix"\n ],\n "No users found": [\n null,\n "No s\'ha trobat cap usuari"\n ],\n "This client does not allow presence subscriptions": [\n null,\n "Aquest client no admet les subscripcions de presència"\n ],\n "Click to hide these contacts": [\n null,\n "Feu clic per amagar aquests contactes"\n ],\n "Minimize this chat box": [\n null,\n "Minimitza aquest quadre del xat"\n ],\n "Click to restore this chat": [\n null,\n "Feu clic per restaurar aquest xat"\n ],\n "Minimized": [\n null,\n "Minimitzat"\n ],\n "This room is not anonymous": [\n null,\n "Aquesta sala no és anònima"\n ],\n "This room now shows unavailable members": [\n null,\n "Aquesta sala ara mostra membres no disponibles"\n ],\n "This room does not show unavailable members": [\n null,\n "Aquesta sala no mostra membres no disponibles"\n ],\n "Room logging is now enabled": [\n null,\n "El registre de la sala està habilitat"\n ],\n "Room logging is now disabled": [\n null,\n "El registre de la sala està deshabilitat"\n ],\n "This room is now semi-anonymous": [\n null,\n "Aquesta sala ara és parcialment anònima"\n ],\n "This room is now fully-anonymous": [\n null,\n "Aquesta sala ara és totalment anònima"\n ],\n "A new room has been created": [\n null,\n "S\'ha creat una sala nova"\n ],\n "You have been banned from this room": [\n null,\n "Se us ha expulsat d\'aquesta sala"\n ],\n "You have been kicked from this room": [\n null,\n "Se us ha expulsat d\'aquesta sala"\n ],\n "You have been removed from this room because of an affiliation change": [\n null,\n "Se us ha eliminat d\'aquesta sala a causa d\'un canvi d\'afiliació"\n ],\n "You have been removed from this room because the room has changed to members-only and you\'re not a member": [\n null,\n "Se us ha eliminat d\'aquesta sala perquè ara només permet membres i no en sou membre"\n ],\n "You have been removed from this room because the MUC (Multi-user chat) service is being shut down.": [\n null,\n "Se us ha eliminat d\'aquesta sala perquè s\'està tancant el servei MUC (xat multiusuari)."\n ],\n "Message": [\n null,\n "Missatge"\n ],\n "Hide the list of occupants": [\n null,\n "Amaga la llista d\'ocupants"\n ],\n "${command}": [\n null,\n ""\n ],\n "Are you sure you want to clear the messages from this room?": [\n null,\n "Segur que voleu esborrar els missatges d\'aquesta sala?"\n ],\n "Error: could not execute the command": [\n null,\n "Error: no s\'ha pogut executar l\'ordre"\n ],\n "Change user\'s affiliation to admin": [\n null,\n "Canvia l\'afiliació de l\'usuari a administrador"\n ],\n "Ban user from room": [\n null,\n "Expulsa l\'usuari de la sala"\n ],\n "Change user role to occupant": [\n null,\n "Canvia el rol de l\'usuari a ocupant"\n ],\n "Kick user from room": [\n null,\n "Expulsa l\'usuari de la sala"\n ],\n "Write in 3rd person": [\n null,\n "Escriu en tercera persona"\n ],\n "Grant membership to a user": [\n null,\n "Atorga una afiliació a un usuari"\n ],\n "Remove user\'s ability to post messages": [\n null,\n "Elimina la capacitat de l\'usuari de publicar missatges"\n ],\n "Change your nickname": [\n null,\n "Canvieu el vostre àlies"\n ],\n "Grant moderator role to user": [\n null,\n "Atorga el rol de moderador a l\'usuari"\n ],\n "Grant ownership of this room": [\n null,\n "Atorga la propietat d\'aquesta sala"\n ],\n "Revoke user\'s membership": [\n null,\n "Revoca l\'afiliació de l\'usuari"\n ],\n "Set room subject (alias for /subject)": [\n null,\n ""\n ],\n "Allow muted user to post messages": [\n null,\n "Permet que un usuari silenciat publiqui missatges"\n ],\n "The nickname you chose is reserved or currently in use, please choose a different one.": [\n null,\n ""\n ],\n "Nickname": [\n null,\n "Àlies"\n ],\n "This chatroom requires a password": [\n null,\n "Aquesta sala de xat requereix una contrasenya"\n ],\n "Password: ": [\n null,\n "Contrasenya:"\n ],\n "Submit": [\n null,\n "Envia"\n ],\n "${notification.reason}": [\n null,\n ""\n ],\n " has left the room. \\"": [\n null,\n ""\n ],\n " has joined the room. \\"": [\n null,\n ""\n ],\n " has joined the room.": [\n null,\n ""\n ],\n "Topic set by %1$s to: %2$s": [\n null,\n "Tema definit per %1$s en: %2$s"\n ],\n "Occupants": [\n null,\n "Ocupants"\n ],\n "Hidden": [\n null,\n "Amagat"\n ],\n "Message archiving": [\n null,\n ""\n ],\n "Members only": [\n null,\n ""\n ],\n "Moderated": [\n null,\n "Moderada"\n ],\n "Non-anonymous": [\n null,\n "No és anònima"\n ],\n "Persistent": [\n null,\n ""\n ],\n "Public": [\n null,\n "Pública"\n ],\n "Semi-anonymous": [\n null,\n "Semianònima"\n ],\n "Unmoderated": [\n null,\n "No moderada"\n ],\n "Unsecured": [\n null,\n ""\n ],\n "Messages are archived on the server": [\n null,\n ""\n ],\n "All other room occupants can see your XMPP username": [\n null,\n ""\n ],\n "This room persists even if it\'s unoccupied": [\n null,\n ""\n ],\n "Only moderators can see your XMPP username": [\n null,\n ""\n ],\n "This room will disappear once the last person leaves": [\n null,\n ""\n ],\n "You are about to invite %1$s to the chat room \\"%2$s\\". ": [\n null,\n "Esteu a punt de convidar %1$s a la sala de xat \\"%2$s\\". "\n ],\n "You may optionally include a message, explaining the reason for the invitation.": [\n null,\n "Teniu l\'opció d\'incloure un missatge per explicar el motiu de la invitació."\n ],\n "Please enter a valid XMPP username": [\n null,\n ""\n ],\n "Room name": [\n null,\n "Nom de la sala"\n ],\n "Server": [\n null,\n "Servidor"\n ],\n "Join Room": [\n null,\n "Uneix-me a la sala"\n ],\n "Show rooms": [\n null,\n "Mostra les sales"\n ],\n "Rooms": [\n null,\n "Sales"\n ],\n "No rooms on %1$s": [\n null,\n "No hi ha cap sala a %1$s"\n ],\n "Description:": [\n null,\n "Descripció:"\n ],\n "Room Address (JID):": [\n null,\n ""\n ],\n "Occupants:": [\n null,\n "Ocupants:"\n ],\n "Features:": [\n null,\n "Característiques:"\n ],\n "Requires authentication": [\n null,\n "Cal autenticar-se"\n ],\n "Requires an invitation": [\n null,\n "Cal tenir una invitació"\n ],\n "Open room": [\n null,\n "Obre la sala"\n ],\n "Permanent room": [\n null,\n "Sala permanent"\n ],\n "Temporary room": [\n null,\n "Sala temporal"\n ],\n "%1$s has invited you to join a chat room: %2$s": [\n null,\n "%1$s us ha convidat a unir-vos a una sala de xat: %2$s"\n ],\n "%1$s has invited you to join a chat room: %2$s, and left the following reason: \\"%3$s\\"": [\n null,\n "%1$s us ha convidat a unir-vos a una sala de xat (%2$s) i ha deixat el següent motiu: \\"%3$s\\""\n ],\n "Notification from %1$s": [\n null,\n ""\n ],\n "%1$s says": [\n null,\n ""\n ],\n "wants to be your contact": [\n null,\n ""\n ],\n "Re-establishing encrypted session": [\n null,\n "S\'està tornant a establir la sessió xifrada"\n ],\n "Generating private key.": [\n null,\n "S\'està generant la clau privada"\n ],\n "Your browser might become unresponsive.": [\n null,\n "És possible que el navegador no respongui."\n ],\n "Authentication request from %1$s\\n\\nYour chat contact is attempting to verify your identity, by asking you the question below.\\n\\n%2$s": [\n null,\n "Sol·licitud d\'autenticació de %1$s\\n\\nEl contacte del xat està intentant verificar la vostra identitat mitjançant la pregunta següent.\\n\\n%2$s"\n ],\n "Could not verify this user\'s identify.": [\n null,\n "No s\'ha pogut verificar la identitat d\'aquest usuari."\n ],\n "Exchanging private key with contact.": [\n null,\n "S\'està intercanviant la clau privada amb el contacte."\n ],\n "Your messages are not encrypted anymore": [\n null,\n "Els vostres missatges ja no estan xifrats"\n ],\n "Your messages are now encrypted but your contact\'s identity has not been verified.": [\n null,\n "Ara, els vostres missatges estan xifrats, però no s\'ha verificat la identitat del contacte."\n ],\n "Your contact\'s identify has been verified.": [\n null,\n "S\'ha verificat la identitat del contacte."\n ],\n "Your contact has ended encryption on their end, you should do the same.": [\n null,\n "El contacte ha conclòs el xifratge; cal que feu el mateix."\n ],\n "Your message could not be sent": [\n null,\n "No s\'ha pogut enviar el missatge"\n ],\n "We received an unencrypted message": [\n null,\n "Hem rebut un missatge sense xifrar"\n ],\n "We received an unreadable encrypted message": [\n null,\n "Hem rebut un missatge xifrat il·legible"\n ],\n "Here are the fingerprints, please confirm them with %1$s, outside of this chat.\\n\\nFingerprint for you, %2$s: %3$s\\n\\nFingerprint for %1$s: %4$s\\n\\nIf you have confirmed that the fingerprints match, click OK, otherwise click Cancel.": [\n null,\n "Aquí es mostren les empremtes. Confirmeu-les amb %1$s fora d\'aquest xat.\\n\\nEmpremta de l\'usuari %2$s: %3$s\\n\\nEmpremta de %1$s: %4$s\\n\\nSi heu confirmat que les empremtes coincideixen, feu clic a D\'acord; en cas contrari, feu clic a Cancel·la."\n ],\n "You will be prompted to provide a security question and then an answer to that question.\\n\\nYour contact will then be prompted the same question and if they type the exact same answer (case sensitive), their identity will be verified.": [\n null,\n "Se us demanarà que indiqueu una pregunta de seguretat i la resposta corresponent.\\n\\nEs farà la mateixa pregunta al vostre contacte i, si escriu exactament la mateixa resposta (es distingeix majúscules de minúscules), se\'n verificarà la identitat."\n ],\n "What is your security question?": [\n null,\n "Quina és la vostra pregunta de seguretat?"\n ],\n "What is the answer to the security question?": [\n null,\n "Quina és la resposta a la pregunta de seguretat?"\n ],\n "Invalid authentication scheme provided": [\n null,\n "S\'ha indicat un esquema d\'autenticació no vàlid"\n ],\n "Your messages are not encrypted. Click here to enable OTR encryption.": [\n null,\n "Els vostres missatges no estan xifrats. Feu clic aquí per habilitar el xifratge OTR."\n ],\n "Your messages are encrypted, but your contact has not been verified.": [\n null,\n "Els vostres missatges estan xifrats, però no s\'ha verificat el contacte."\n ],\n "Your messages are encrypted and your contact verified.": [\n null,\n "Els vostres missatges estan xifrats i s\'ha verificat el contacte."\n ],\n "Your contact has closed their end of the private session, you should do the same": [\n null,\n "El vostre contacte ha tancat la seva sessió privada; cal que feu el mateix."\n ],\n "End encrypted conversation": [\n null,\n "Finalitza la conversa xifrada"\n ],\n "Refresh encrypted conversation": [\n null,\n "Actualitza la conversa xifrada"\n ],\n "Start encrypted conversation": [\n null,\n "Comença la conversa xifrada"\n ],\n "Verify with fingerprints": [\n null,\n "Verifica amb empremtes"\n ],\n "Verify with SMP": [\n null,\n "Verifica amb SMP"\n ],\n "What\'s this?": [\n null,\n "Què és això?"\n ],\n "unencrypted": [\n null,\n "sense xifrar"\n ],\n "unverified": [\n null,\n "sense verificar"\n ],\n "verified": [\n null,\n "verificat"\n ],\n "finished": [\n null,\n "acabat"\n ],\n " e.g. conversejs.org": [\n null,\n "p. ex. conversejs.org"\n ],\n "Your XMPP provider\'s domain name:": [\n null,\n "Nom de domini del vostre proveïdor XMPP:"\n ],\n "Fetch registration form": [\n null,\n "Obtingues un formulari de registre"\n ],\n "Tip: A list of public XMPP providers is available": [\n null,\n "Consell: hi ha disponible una llista de proveïdors XMPP públics"\n ],\n "here": [\n null,\n "aquí"\n ],\n "Register": [\n null,\n "Registre"\n ],\n "Sorry, the given provider does not support in band account registration. Please try with a different provider.": [\n null,\n "El proveïdor indicat no admet el registre del compte. Proveu-ho amb un altre proveïdor."\n ],\n "Requesting a registration form from the XMPP server": [\n null,\n "S\'està sol·licitant un formulari de registre del servidor XMPP"\n ],\n "Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?": [\n null,\n "Ha passat alguna cosa mentre s\'establia la connexió amb \\"%1$s\\". Segur que existeix?"\n ],\n "Now logging you in": [\n null,\n "S\'està iniciant la vostra sessió"\n ],\n "Registered successfully": [\n null,\n "Registre correcte"\n ],\n "The provider rejected your registration attempt. Please check the values you entered for correctness.": [\n null,\n "El proveïdor ha rebutjat l\'intent de registre. Comproveu que els valors que heu introduït siguin correctes."\n ],\n "Retry": [\n null,\n ""\n ],\n "This contact is busy": [\n null,\n "Aquest contacte està ocupat"\n ],\n "This contact is online": [\n null,\n "Aquest contacte està en línia"\n ],\n "This contact is offline": [\n null,\n "Aquest contacte està desconnectat"\n ],\n "This contact is unavailable": [\n null,\n "Aquest contacte no està disponible"\n ],\n "This contact is away for an extended period": [\n null,\n "Aquest contacte està absent durant un període prolongat"\n ],\n "This contact is away": [\n null,\n "Aquest contacte està absent"\n ],\n "Groups": [\n null,\n "Grups"\n ],\n "My contacts": [\n null,\n "Els meus contactes"\n ],\n "Pending contacts": [\n null,\n "Contactes pendents"\n ],\n "Contact requests": [\n null,\n "Sol·licituds de contacte"\n ],\n "Ungrouped": [\n null,\n "Sense agrupar"\n ],\n "Filter": [\n null,\n ""\n ],\n "State": [\n null,\n ""\n ],\n "Any": [\n null,\n ""\n ],\n "Unread": [\n null,\n ""\n ],\n "Chatty": [\n null,\n ""\n ],\n "Extended Away": [\n null,\n ""\n ],\n "Click to chat with this contact": [\n null,\n "Feu clic per conversar amb aquest contacte"\n ],\n "Name": [\n null,\n "Nom"\n ],\n "Are you sure you want to remove this contact?": [\n null,\n "Segur que voleu eliminar aquest contacte?"\n ],\n "Are you sure you want to decline this contact request?": [\n null,\n "Segur que voleu rebutjar aquesta sol·licitud de contacte?"\n ]\n }\n }\n}';}); -define('text!de',[],function () { return '{\n "domain": "converse",\n "locale_data": {\n "converse": {\n "": {\n "domain": "converse",\n "plural_forms": "nplurals=2; plural=n != 1;",\n "lang": "de"\n },\n "Bookmark this room": [\n null,\n "Lesezeichen setzen"\n ],\n "The name for this bookmark:": [\n null,\n "Der Name für das Lesezeichen:"\n ],\n "Would you like this room to be automatically joined upon startup?": [\n null,\n "Diesem Raum automatisch betreten?"\n ],\n "What should your nickname for this room be?": [\n null,\n "Wie soll dein Nickname in diesem Raum sein?"\n ],\n "Save": [\n null,\n "Speichern"\n ],\n "Cancel": [\n null,\n "Abbrechen"\n ],\n "Are you sure you want to remove the bookmark \\"%1$s\\"?": [\n null,\n "Wollen Sie dieses Lesezeichen wirklich entfernen \\"%1$s\\"?"\n ],\n "Sorry, something went wrong while trying to save your bookmark.": [\n null,\n "Etwas ging beim Versuch des Abspeicherns des Lesezeichens schief."\n ],\n "Click to toggle the bookmarks list": [\n null,\n "Zum Aus-/Einklappen klicken"\n ],\n "Remove this bookmark": [\n null,\n "Dieses Lesezeichen entfernen"\n ],\n "Show more information on this room": [\n null,\n "Mehr Information über diesen Raum zeigen"\n ],\n "Click to open this room": [\n null,\n "Hier klicken um diesen Raum zu öffnen"\n ],\n "You have unread messages": [\n null,\n "Sie haben ungelesene Nachrichten"\n ],\n "Close this chat box": [\n null,\n "Das Chat-Fenster schließen"\n ],\n "Personal message": [\n null,\n "Persönliche Nachricht"\n ],\n "Send": [\n null,\n "Senden"\n ],\n "me": [\n null,\n "Ich"\n ],\n "A very large message has been received.This might be due to an attack meant to degrade the chat performance.Output has been shortened.": [\n null,\n "Eine sehr lange Nachricht wurde empfangen. Dies könnte ein Angriff mit dem Ziel sein die Chat-Performanz zu reduzieren. Die Ausgabe wurde gekürzt."\n ],\n "Typing from another device": [\n null,\n "Schreibt von einem anderen Gerät"\n ],\n "is typing": [\n null,\n "tippt"\n ],\n "Stopped typing on the other device": [\n null,\n "Schreibt nicht mehr auf dem anderen Gerät"\n ],\n "has stopped typing": [\n null,\n "tippt nicht mehr"\n ],\n "has gone away": [\n null,\n "ist jetzt abwesend"\n ],\n "Show this menu": [\n null,\n "Dieses Menü anzeigen"\n ],\n "Write in the third person": [\n null,\n "In der dritten Person schreiben"\n ],\n "Remove messages": [\n null,\n "Nachrichten entfernen"\n ],\n "Are you sure you want to clear the messages from this chat box?": [\n null,\n "Sind Sie sicher, dass Sie alle Nachrichten dieses Chats löschen möchten?"\n ],\n "has gone offline": [\n null,\n "ist offline gegangen"\n ],\n "is busy": [\n null,\n "ist beschäftigt"\n ],\n "Clear all messages": [\n null,\n "Alle Nachrichten löschen"\n ],\n "Insert a smiley": [\n null,\n "Smiley einfügen"\n ],\n "Start a call": [\n null,\n "Beginne ein Gespräch"\n ],\n "Contacts": [\n null,\n "Kontakte"\n ],\n "XMPP Username:": [\n null,\n "XMPP Benutzername:"\n ],\n "Password:": [\n null,\n "Passwort:"\n ],\n "Click here to log in anonymously": [\n null,\n "Hier klicken um anonym anzumelden"\n ],\n "Log In": [\n null,\n "Anmelden"\n ],\n "Username": [\n null,\n "Benutzername"\n ],\n "user@server": [\n null,\n "Benutzer@Server"\n ],\n "password": [\n null,\n "passwort"\n ],\n "Sign in": [\n null,\n "Anmelden"\n ],\n "I am %1$s": [\n null,\n "Ich bin %1$s"\n ],\n "Click here to write a custom status message": [\n null,\n "Hier klicken um Statusnachricht zu ändern"\n ],\n "Click to change your chat status": [\n null,\n "Hier klicken um Status zu ändern"\n ],\n "Custom status": [\n null,\n "Statusnachricht"\n ],\n "online": [\n null,\n "online"\n ],\n "busy": [\n null,\n "beschäftigt"\n ],\n "away for long": [\n null,\n "länger abwesend"\n ],\n "away": [\n null,\n "abwesend"\n ],\n "offline": [\n null,\n "abgemeldet"\n ],\n "Online": [\n null,\n "Online"\n ],\n "Busy": [\n null,\n "Beschäftigt"\n ],\n "Away": [\n null,\n "Abwesend"\n ],\n "Offline": [\n null,\n "Abgemeldet"\n ],\n "Log out": [\n null,\n "Abmelden"\n ],\n "Click to add new chat contacts": [\n null,\n "Hier klicken um neuen Kontakt hinzuzufügen"\n ],\n "Add a contact": [\n null,\n "Kontakt hinzufügen"\n ],\n "Contact name": [\n null,\n "Name des Kontakts"\n ],\n "Search": [\n null,\n "Suche"\n ],\n "e.g. user@example.org": [\n null,\n "z.B. benutzer@example.org"\n ],\n "Add": [\n null,\n "Hinzufügen"\n ],\n "No users found": [\n null,\n "Keine Benutzer gefunden"\n ],\n "This client does not allow presence subscriptions": [\n null,\n "Dieser Kontakt erlaubt die Abonnieren des Status nicht"\n ],\n "Click to hide these contacts": [\n null,\n "Hier klicken um diese Kontakte zu verstecken"\n ],\n "Close this box": [\n null,\n "Schließen"\n ],\n "Minimize this chat box": [\n null,\n "Minimiere dieses Gesprächsfenster"\n ],\n "Click to restore this chat": [\n null,\n "Hier klicken um diesen Chat wiederherzustellen"\n ],\n "Minimized": [\n null,\n "Minimiert"\n ],\n "This room is not anonymous": [\n null,\n "Dieser Raum ist nicht anonym"\n ],\n "This room now shows unavailable members": [\n null,\n "Dieser Raum zeigt jetzt nicht verfügbare Mitglieder an"\n ],\n "This room does not show unavailable members": [\n null,\n "Dieser Raum zeigt jetzt nicht verfügbare Mitglieder nicht an"\n ],\n "The room configuration has changed": [\n null,\n "Die Raumkonfiguration hat sich geändert"\n ],\n "Room logging is now enabled": [\n null,\n "Nachrichten in diesem Raum werden ab jetzt protokolliert"\n ],\n "Room logging is now disabled": [\n null,\n "Nachrichten in diesem Raum werden nicht mehr protokolliert"\n ],\n "This room is now no longer anonymous": [\n null,\n "Dieses Zimmer ist jetzt nicht anonym"\n ],\n "This room is now semi-anonymous": [\n null,\n "Dieser Raum ist jetzt teils anonym"\n ],\n "This room is now fully-anonymous": [\n null,\n "Dieser Raum ist jetzt anonym"\n ],\n "A new room has been created": [\n null,\n "Ein neuer Raum wurde erstellt"\n ],\n "You have been banned from this room": [\n null,\n "Sie sind aus diesem Raum verbannt worden"\n ],\n "You have been kicked from this room": [\n null,\n "Sie wurden aus diesem Raum hinausgeworfen"\n ],\n "You have been removed from this room because of an affiliation change": [\n null,\n "Sie wurden wegen einer Zugehörigkeitsänderung entfernt"\n ],\n "You have been removed from this room because the room has changed to members-only and you\'re not a member": [\n null,\n "Du wurdest aus dem Raum entfernt, da der Raum jetzt nur noch Mitglieder erlaubt und du kein Mitglied bist"\n ],\n "You have been removed from this room because the MUC (Multi-user chat) service is being shut down.": [\n null,\n "Sie wurden aus diesem Raum entfernt, da der MUC (Multi-User Chat) Dienst gerade heruntergefahren wird."\n ],\n "%1$s has been banned": [\n null,\n "%1$s ist verbannt worden"\n ],\n "%1$s\'s nickname has changed": [\n null,\n "%1$s\'s Spitzname hat sich geändert"\n ],\n "%1$s has been kicked out": [\n null,\n "%1$s wurde hinausgeworfen"\n ],\n "%1$s has been removed because of an affiliation change": [\n null,\n "%1$s wurde wegen einer Zugehörigkeitsänderung entfernt"\n ],\n "%1$s has been removed for not being a member": [\n null,\n "%1$s ist kein Mitglied und wurde daher entfernt"\n ],\n "Your nickname has been automatically set to: %1$s": [\n null,\n "Ihr Spitzname wurde automatisiert geändert zu: %1$s"\n ],\n "Your nickname has been changed to: %1$s": [\n null,\n "Ihr Spitzname wurde geändert zu: %1$s"\n ],\n "Message": [\n null,\n "Nachricht"\n ],\n "Close and leave this room": [\n null,\n "Schließe und verlasse diesen Raum"\n ],\n "Configure this room": [\n null,\n "Einstellungsänderungen an diesem Raum vornehmen"\n ],\n "Hide the list of occupants": [\n null,\n "Teilnehmerliste ausblenden"\n ],\n "${command}": [\n null,\n ""\n ],\n "Are you sure you want to clear the messages from this room?": [\n null,\n "Sind Sie sicher, dass Sie alle Nachrichten in diesem Raum löschen möchten?"\n ],\n "Error: could not execute the command": [\n null,\n "Fehler: Konnte den Befehl nicht ausführen"\n ],\n "Change user\'s affiliation to admin": [\n null,\n "Ändere die Zugehörigkeit des Benutzers zu Administrator"\n ],\n "Ban user from room": [\n null,\n "Verbanne einen Benutzer aus dem Raum"\n ],\n "Change user role to occupant": [\n null,\n "Benutzerrolle zu Teilnehmer ändern"\n ],\n "Kick user from room": [\n null,\n "Werfe Benutzer aus dem Raum"\n ],\n "Write in 3rd person": [\n null,\n "In der dritten Person schreiben"\n ],\n "Grant membership to a user": [\n null,\n "Gewähre einem Benutzer Mitgliedschaft"\n ],\n "Remove user\'s ability to post messages": [\n null,\n "Entferne die Möglichkeit des Benutzers Nachrichten zu senden"\n ],\n "Change your nickname": [\n null,\n "Spitznamen ändern"\n ],\n "Grant moderator role to user": [\n null,\n "Gebe Benutzer Moderatorrechte"\n ],\n "Grant ownership of this room": [\n null,\n "Besitzrechte an diesem Raum vergeben"\n ],\n "Revoke user\'s membership": [\n null,\n "Widerrufe die Mitgliedschaft des Benutzers"\n ],\n "Set room subject": [\n null,\n "Chatraum Thema festlegen"\n ],\n "Set room subject (alias for /subject)": [\n null,\n "Setze Raumthema (alias für /subject)"\n ],\n "Allow muted user to post messages": [\n null,\n "Erlaube stummgeschaltetem Benutzer Nachrichten zu senden"\n ],\n "The nickname you chose is reserved or currently in use, please choose a different one.": [\n null,\n "Der gewählte Spitzname ist reserviert oder derzeit in Gebrauch. Bitte wähle einen Anderen."\n ],\n "Please choose your nickname": [\n null,\n "Wähle deinen Spitznamen"\n ],\n "Nickname": [\n null,\n "Spitzname"\n ],\n "Enter room": [\n null,\n "Betrete Raum"\n ],\n "This chatroom requires a password": [\n null,\n "Dieser Raum erfordert ein Passwort"\n ],\n "Password: ": [\n null,\n "Passwort: "\n ],\n "Submit": [\n null,\n "Abschicken"\n ],\n "This action was done by %1$s.": [\n null,\n "Diese Aktion wurde ausgeführt durch %1$s."\n ],\n "The reason given is: \\"%1$s\\".": [\n null,\n "Die angegebene Begründung lautet: \\"%1$s\\"."\n ],\n "${notification.reason}": [\n null,\n ""\n ],\n " has left the room. \\"": [\n null,\n " hat den Raum verlassen. \\""\n ],\n " has left the room": [\n null,\n " hat den Raum verlassen"\n ],\n " has joined the room. \\"": [\n null,\n " hat den Raum betreten. \\""\n ],\n " has joined the room.": [\n null,\n " ist dem Raum beigetreten."\n ],\n "You are not on the member list of this room.": [\n null,\n "Sie sind nicht auf der Mitgliederliste dieses Raums."\n ],\n "You have been banned from this room.": [\n null,\n "Sie sind aus diesem Raum verbannt worden."\n ],\n "No nickname was specified.": [\n null,\n "Kein Spitzname festgelegt."\n ],\n "You are not allowed to create new rooms.": [\n null,\n "Es ist Ihnen nicht erlaubt neue Räume anzulegen."\n ],\n "Your nickname doesn\'t conform to this room\'s policies.": [\n null,\n "Ungültiger Spitzname."\n ],\n "This room does not (yet) exist.": [\n null,\n "Dieser Raum existiert (noch) nicht."\n ],\n "This room has reached its maximum number of occupants.": [\n null,\n "Dieser Raum hat die maximale Mitgliederanzahl erreicht"\n ],\n "Topic set by %1$s to: %2$s": [\n null,\n "%1$s hat das Thema zu \\"%2$s\\" geändert"\n ],\n "This user is a moderator.": [\n null,\n "Dieser Benutzer ist ein Moderator."\n ],\n "This user can send messages in this room.": [\n null,\n "Dieser Benutzer kann Nachrichten in diesem Raum verschicken."\n ],\n "This user can NOT send messages in this room.": [\n null,\n "Dieser Benutzer kann keine Nachrichten in diesem Raum verschicken."\n ],\n "Occupants": [\n null,\n "Teilnehmer"\n ],\n "Invite": [\n null,\n "Einladen"\n ],\n "Features": [\n null,\n "Funktionen"\n ],\n "Hidden": [\n null,\n "Versteckt"\n ],\n "Message archiving": [\n null,\n "Nachrichten Archivierung"\n ],\n "Members only": [\n null,\n "Nur Mitglieder"\n ],\n "Moderated": [\n null,\n "Moderiert"\n ],\n "Non-anonymous": [\n null,\n "Nicht anonym"\n ],\n "Open": [\n null,\n "Offen"\n ],\n "Password protected": [\n null,\n "Passwort geschützt"\n ],\n "Persistent": [\n null,\n "Dauerhaft"\n ],\n "Public": [\n null,\n "Öffentlich"\n ],\n "Semi-anonymous": [\n null,\n "Teils anonym"\n ],\n "Temporary": [\n null,\n "Vorübergehend"\n ],\n "Unmoderated": [\n null,\n "Unmoderiert"\n ],\n "Unsecured": [\n null,\n "Ungeschützt"\n ],\n "This room is not publicly searchable": [\n null,\n "Dieser Raum ist nicht suchbar"\n ],\n "Messages are archived on the server": [\n null,\n "Nachrichten werden auf dem Server archiviert"\n ],\n "This room is restricted to members only": [\n null,\n "Dieser Raum ist nur für Mitglieder zugänglich"\n ],\n "This room is being moderated": [\n null,\n "Dieser Raum ist moderiert"\n ],\n "Anyone can join this room": [\n null,\n "Jeder kann diesen Raum betreten"\n ],\n "This room requires a password before entry": [\n null,\n "Dieser Raum erfordert ein Passwort"\n ],\n "This room persists even if it\'s unoccupied": [\n null,\n "Dieser Raum bleibt auch wenn Niemand in ihm ist bestehen"\n ],\n "This room is publicly searchable": [\n null,\n "Dieser Raum ist per Suche auffindbar"\n ],\n "This room will disappear once the last person leaves": [\n null,\n "Dieser Raum verschwindet sobald diesen die letzte Person verlassen hat"\n ],\n "This room is not being moderated": [\n null,\n "Dieser Raum ist unmoderiert"\n ],\n "This room does not require a password upon entry": [\n null,\n "Dieser Raum erfordert kein Passwort"\n ],\n "You are about to invite %1$s to the chat room \\"%2$s\\". ": [\n null,\n "Du bist gerade dabei %1$s in den Raum \\"%2$s\\" einzuladen. "\n ],\n "You may optionally include a message, explaining the reason for the invitation.": [\n null,\n "Du kannst optional eine Nachricht mit den Gründen der Einladung mitsenden."\n ],\n "Please enter a valid XMPP username": [\n null,\n ""\n ],\n "Room name": [\n null,\n "Raumname"\n ],\n "Server": [\n null,\n "Server"\n ],\n "Join Room": [\n null,\n "Raum betreten"\n ],\n "Show rooms": [\n null,\n "Räume anzeigen"\n ],\n "Rooms": [\n null,\n "Räume"\n ],\n "No rooms on %1$s": [\n null,\n "Keine Räume auf %1$s"\n ],\n "Description:": [\n null,\n "Beschreibung:"\n ],\n "Room Address (JID):": [\n null,\n ""\n ],\n "Occupants:": [\n null,\n "Teilnehmer:"\n ],\n "Features:": [\n null,\n "Funktionen:"\n ],\n "Requires authentication": [\n null,\n "Authentifizierung erforderlich"\n ],\n "Requires an invitation": [\n null,\n "Einladung erforderlich"\n ],\n "Open room": [\n null,\n "Offener Raum"\n ],\n "Permanent room": [\n null,\n "Dauerhafter Raum"\n ],\n "Temporary room": [\n null,\n "Vorübergehender Raum"\n ],\n "%1$s has invited you to join a chat room: %2$s": [\n null,\n "%1$s hat Sie in den Raum \\"%2$s\\" eingeladen"\n ],\n "%1$s has invited you to join a chat room: %2$s, and left the following reason: \\"%3$s\\"": [\n null,\n "%1$s hat Sie in den Raum \\"%2$s\\" eingeladen. Begründung: \\"%3$s\\""\n ],\n "Notification from %1$s": [\n null,\n "Benachrichtigung von %1$s"\n ],\n "%1$s says": [\n null,\n "%1$s sagt"\n ],\n "has come online": [\n null,\n "kam online"\n ],\n "wants to be your contact": [\n null,\n "will dein Kontakt sein"\n ],\n "Re-establishing encrypted session": [\n null,\n "Verschlüsselte Sitzung wiederherstellen"\n ],\n "Generating private key.": [\n null,\n "Generiere privaten Schlüssel."\n ],\n "Your browser might become unresponsive.": [\n null,\n "Ihr Browser könnte langsam reagieren."\n ],\n "Authentication request from %1$s\\n\\nYour chat contact is attempting to verify your identity, by asking you the question below.\\n\\n%2$s": [\n null,\n "Authentifizierungsanfrage von %1$s\\n\\nIhr Kontakt möchte durch die folgende Frage Ihre Identität verifizieren:\\n\\n%2$s"\n ],\n "Could not verify this user\'s identify.": [\n null,\n "Die Identität des Benutzers konnte nicht verifiziert werden."\n ],\n "Exchanging private key with contact.": [\n null,\n "Tausche private Schlüssel mit Kontakt aus."\n ],\n "Your messages are not encrypted anymore": [\n null,\n "Deine Nachrichten sind nicht mehr verschlüsselt"\n ],\n "Your messages are now encrypted but your contact\'s identity has not been verified.": [\n null,\n "Deine Nachrichten sind ab jetzt verschlüsselt, aber die Identität des Kontaktes wurde noch nicht bestätigt."\n ],\n "Your contact\'s identify has been verified.": [\n null,\n "Die Identität des Kontakts wurde bestätigt."\n ],\n "Your contact has ended encryption on their end, you should do the same.": [\n null,\n "Dein Kontakt hat die Verschlüsselung deaktiviert, du solltest das gleiche tun."\n ],\n "Your message could not be sent": [\n null,\n "Ihre Nachricht konnte nicht gesendet werden"\n ],\n "We received an unencrypted message": [\n null,\n "Wir haben eine unverschlüsselte Nachricht empfangen"\n ],\n "We received an unreadable encrypted message": [\n null,\n "Wir haben eine unlesbare Nachricht empfangen"\n ],\n "Here are the fingerprints, please confirm them with %1$s, outside of this chat.\\n\\nFingerprint for you, %2$s: %3$s\\n\\nFingerprint for %1$s: %4$s\\n\\nIf you have confirmed that the fingerprints match, click OK, otherwise click Cancel.": [\n null,\n "Hier sind die Fingerabdrücke, bitte bestätige diese mit %1$s, außerhalb von diesem Chat\\n\\nFingerabdruck für dich, %2$s: %3$s\\n\\nFingerabdruck für %1$s: %4$s\\n\\nWenn du überprüft hast, dass die Fingerabdrücke zusammenpassen, drücke OK, andernfalls Abbrechen."\n ],\n "You will be prompted to provide a security question and then an answer to that question.\\n\\nYour contact will then be prompted the same question and if they type the exact same answer (case sensitive), their identity will be verified.": [\n null,\n ""\n ],\n "What is your security question?": [\n null,\n ""\n ],\n "What is the answer to the security question?": [\n null,\n ""\n ],\n "Invalid authentication scheme provided": [\n null,\n ""\n ],\n "Your messages are not encrypted. Click here to enable OTR encryption.": [\n null,\n ""\n ],\n "Your messages are encrypted, but your contact has not been verified.": [\n null,\n ""\n ],\n "Your messages are encrypted and your contact verified.": [\n null,\n ""\n ],\n "Your contact has closed their end of the private session, you should do the same": [\n null,\n ""\n ],\n "End encrypted conversation": [\n null,\n ""\n ],\n "Refresh encrypted conversation": [\n null,\n ""\n ],\n "Start encrypted conversation": [\n null,\n ""\n ],\n "Verify with fingerprints": [\n null,\n ""\n ],\n "Verify with SMP": [\n null,\n ""\n ],\n "What\'s this?": [\n null,\n "Was ist das?"\n ],\n "unencrypted": [\n null,\n "unverschlüsselt"\n ],\n "unverified": [\n null,\n "nicht verifiziert"\n ],\n "verified": [\n null,\n "verifiziert"\n ],\n "finished": [\n null,\n "erledigt"\n ],\n " e.g. conversejs.org": [\n null,\n " z. B. conversejs.org"\n ],\n "Your XMPP provider\'s domain name:": [\n null,\n ""\n ],\n "Fetch registration form": [\n null,\n ""\n ],\n "Tip: A list of public XMPP providers is available": [\n null,\n ""\n ],\n "here": [\n null,\n ""\n ],\n "Register": [\n null,\n ""\n ],\n "Sorry, the given provider does not support in band account registration. Please try with a different provider.": [\n null,\n ""\n ],\n "Requesting a registration form from the XMPP server": [\n null,\n ""\n ],\n "Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?": [\n null,\n ""\n ],\n "Now logging you in": [\n null,\n ""\n ],\n "Registered successfully": [\n null,\n ""\n ],\n "The provider rejected your registration attempt. Please check the values you entered for correctness.": [\n null,\n ""\n ],\n "Retry": [\n null,\n ""\n ],\n "This contact is busy": [\n null,\n "Dieser Kontakt ist beschäftigt"\n ],\n "This contact is online": [\n null,\n "Dieser Kontakt ist online"\n ],\n "This contact is offline": [\n null,\n "Dieser Kontakt ist offline"\n ],\n "This contact is unavailable": [\n null,\n "Dieser Kontakt ist nicht verfügbar"\n ],\n "This contact is away for an extended period": [\n null,\n "Dieser Kontakt ist für längere Zeit abwesend"\n ],\n "This contact is away": [\n null,\n "Dieser Kontakt ist abwesend"\n ],\n "Groups": [\n null,\n "Gruppen"\n ],\n "My contacts": [\n null,\n "Meine Kontakte"\n ],\n "Pending contacts": [\n null,\n "Unbestätigte Kontakte"\n ],\n "Contact requests": [\n null,\n "Kontaktanfragen"\n ],\n "Ungrouped": [\n null,\n "Ungruppiert"\n ],\n "Filter": [\n null,\n ""\n ],\n "State": [\n null,\n ""\n ],\n "Any": [\n null,\n ""\n ],\n "Unread": [\n null,\n ""\n ],\n "Chatty": [\n null,\n ""\n ],\n "Extended Away": [\n null,\n ""\n ],\n "Click to chat with this contact": [\n null,\n "Hier klicken um mit diesem Kontakt zu chatten"\n ],\n "Name": [\n null,\n ""\n ],\n "Are you sure you want to remove this contact?": [\n null,\n "Wollen Sie diesen Kontakt wirklich entfernen?"\n ],\n "Are you sure you want to decline this contact request?": [\n null,\n "Wollen Sie diese Kontaktanfrage wirklich ablehnen?"\n ]\n }\n }\n}';}); +define('text!de',[],function () { return '{\n "domain": "converse",\n "locale_data": {\n "converse": {\n "": {\n "domain": "converse",\n "plural_forms": "nplurals=2; plural=n != 1;",\n "lang": "de"\n },\n "Bookmark this room": [\n null,\n "Raum als Lesezeichen setzen"\n ],\n "The name for this bookmark:": [\n null,\n "Der Name für das Lesezeichen:"\n ],\n "Would you like this room to be automatically joined upon startup?": [\n null,\n "Beim Anmelden diesem Raum automatisch betreten?"\n ],\n "What should your nickname for this room be?": [\n null,\n "Wie soll dein Nickname in diesem Raum sein?"\n ],\n "Save": [\n null,\n "Speichern"\n ],\n "Cancel": [\n null,\n "Abbrechen"\n ],\n "Are you sure you want to remove the bookmark \\"%1$s\\"?": [\n null,\n "Wollen Sie dieses Lesezeichen \\"%1$s\\" wirklich entfernen?"\n ],\n "Sorry, something went wrong while trying to save your bookmark.": [\n null,\n "Entschuldigung! Beim Versuch das Lesezeichens zu speichern schlug etwas fehl."\n ],\n "Click to toggle the bookmarks list": [\n null,\n "Liste der Lesezeichen umschalten"\n ],\n "Bookmarks": [\n null,\n "Lesezeichen"\n ],\n "Leave this room": [\n null,\n "Diesen Raum verlassen"\n ],\n "Remove this bookmark": [\n null,\n "Dieses Lesezeichen entfernen"\n ],\n "Unbookmark this room": [\n null,\n "Lesezeichen dieses Raums entfernen"\n ],\n "Show more information on this room": [\n null,\n "Mehr Information über diesen Raum zeigen"\n ],\n "Click to open this room": [\n null,\n "Hier klicken um diesen Raum zu öffnen"\n ],\n "You have unread messages": [\n null,\n "Sie haben ungelesene Nachrichten"\n ],\n "Close this chat box": [\n null,\n "Das Chat-Fenster schließen"\n ],\n "Personal message": [\n null,\n "Persönliche Nachricht"\n ],\n "Send": [\n null,\n "Senden"\n ],\n "me": [\n null,\n "Ich"\n ],\n "A very large message has been received.This might be due to an attack meant to degrade the chat performance.Output has been shortened.": [\n null,\n "Eine sehr lange Nachricht wurde empfangen. Dies könnte ein Angriff mit dem Ziel sein die Chat-Performanz zu reduzieren. Die Ausgabe wurde gekürzt."\n ],\n "Typing from another device": [\n null,\n "Schreibt von einem anderen Gerät"\n ],\n "is typing": [\n null,\n "tippt"\n ],\n "Stopped typing on the other device": [\n null,\n "Schreibt nicht mehr auf dem anderen Gerät"\n ],\n "has stopped typing": [\n null,\n "tippt nicht mehr"\n ],\n "has gone away": [\n null,\n "ist jetzt abwesend"\n ],\n "Show this menu": [\n null,\n "Dieses Menü anzeigen"\n ],\n "Write in the third person": [\n null,\n "In der dritten Person schreiben"\n ],\n "Remove messages": [\n null,\n "Nachrichten entfernen"\n ],\n "Are you sure you want to clear the messages from this chat box?": [\n null,\n "Sind Sie sicher, dass Sie alle Nachrichten dieses Chats löschen möchten?"\n ],\n "has gone offline": [\n null,\n "ist offline gegangen"\n ],\n "is busy": [\n null,\n "ist beschäftigt"\n ],\n "Clear all messages": [\n null,\n "Alle Nachrichten löschen"\n ],\n "Insert a smiley": [\n null,\n "Smiley einfügen"\n ],\n "Start a call": [\n null,\n "Beginne ein Gespräch"\n ],\n "Contacts": [\n null,\n "Kontakte"\n ],\n "XMPP Username:": [\n null,\n "XMPP Benutzername:"\n ],\n "Password:": [\n null,\n "Passwort:"\n ],\n "Click here to log in anonymously": [\n null,\n "Hier klicken um anonym anzumelden"\n ],\n "Log In": [\n null,\n "Anmelden"\n ],\n "Username": [\n null,\n "Benutzername"\n ],\n "user@server": [\n null,\n "Benutzer@Server"\n ],\n "password": [\n null,\n "passwort"\n ],\n "Sign in": [\n null,\n "Anmelden"\n ],\n "I am %1$s": [\n null,\n "Ich bin %1$s"\n ],\n "Click here to write a custom status message": [\n null,\n "Hier klicken um Statusnachricht zu ändern"\n ],\n "Click to change your chat status": [\n null,\n "Hier klicken um Status zu ändern"\n ],\n "Custom status": [\n null,\n "Statusnachricht"\n ],\n "online": [\n null,\n "online"\n ],\n "busy": [\n null,\n "beschäftigt"\n ],\n "away for long": [\n null,\n "länger abwesend"\n ],\n "away": [\n null,\n "abwesend"\n ],\n "offline": [\n null,\n "abgemeldet"\n ],\n "Online": [\n null,\n "Online"\n ],\n "Busy": [\n null,\n "Beschäftigt"\n ],\n "Away": [\n null,\n "Abwesend"\n ],\n "Offline": [\n null,\n "Abgemeldet"\n ],\n "Log out": [\n null,\n "Abmelden"\n ],\n "Click to add new chat contacts": [\n null,\n "Hier klicken um neuen Kontakt hinzuzufügen"\n ],\n "Add a contact": [\n null,\n "Kontakt hinzufügen"\n ],\n "Contact name": [\n null,\n "Name des Kontakts"\n ],\n "Search": [\n null,\n "Suche"\n ],\n "e.g. user@example.org": [\n null,\n "z.B. benutzer@example.org"\n ],\n "Add": [\n null,\n "Hinzufügen"\n ],\n "No users found": [\n null,\n "Keine Benutzer gefunden"\n ],\n "This client does not allow presence subscriptions": [\n null,\n "Dieser Kontakt erlaubt die Abonnieren des Status nicht"\n ],\n "Click to hide these contacts": [\n null,\n "Hier klicken um diese Kontakte zu verstecken"\n ],\n "Close this box": [\n null,\n "Schließen"\n ],\n "Minimize this chat box": [\n null,\n "Minimiere dieses Gesprächsfenster"\n ],\n "Click to restore this chat": [\n null,\n "Hier klicken um diesen Chat wiederherzustellen"\n ],\n "Minimized": [\n null,\n "Minimiert"\n ],\n "This room is not anonymous": [\n null,\n "Dieser Raum ist nicht anonym"\n ],\n "This room now shows unavailable members": [\n null,\n "Dieser Raum zeigt jetzt nicht verfügbare Mitglieder an"\n ],\n "This room does not show unavailable members": [\n null,\n "Dieser Raum zeigt jetzt nicht verfügbare Mitglieder nicht an"\n ],\n "The room configuration has changed": [\n null,\n "Die Raumkonfiguration hat sich geändert"\n ],\n "Room logging is now enabled": [\n null,\n "Nachrichten in diesem Raum werden ab jetzt protokolliert"\n ],\n "Room logging is now disabled": [\n null,\n "Nachrichten in diesem Raum werden nicht mehr protokolliert"\n ],\n "This room is now no longer anonymous": [\n null,\n "Dieses Zimmer ist jetzt nicht anonym"\n ],\n "This room is now semi-anonymous": [\n null,\n "Dieser Raum ist jetzt teils anonym"\n ],\n "This room is now fully-anonymous": [\n null,\n "Dieser Raum ist jetzt anonym"\n ],\n "A new room has been created": [\n null,\n "Ein neuer Raum wurde erstellt"\n ],\n "You have been banned from this room": [\n null,\n "Sie sind aus diesem Raum verbannt worden"\n ],\n "You have been kicked from this room": [\n null,\n "Sie wurden aus diesem Raum hinausgeworfen"\n ],\n "You have been removed from this room because of an affiliation change": [\n null,\n "Sie wurden wegen einer Zugehörigkeitsänderung entfernt"\n ],\n "You have been removed from this room because the room has changed to members-only and you\'re not a member": [\n null,\n "Du wurdest aus dem Raum entfernt, da der Raum jetzt nur noch Mitglieder erlaubt und du kein Mitglied bist"\n ],\n "You have been removed from this room because the MUC (Multi-user chat) service is being shut down.": [\n null,\n "Sie wurden aus diesem Raum entfernt, da der MUC (Multi-User Chat) Dienst gerade heruntergefahren wird."\n ],\n "%1$s has been banned": [\n null,\n "%1$s ist verbannt worden"\n ],\n "%1$s\'s nickname has changed": [\n null,\n "%1$s\'s Spitzname hat sich geändert"\n ],\n "%1$s has been kicked out": [\n null,\n "%1$s wurde hinausgeworfen"\n ],\n "%1$s has been removed because of an affiliation change": [\n null,\n "%1$s wurde wegen einer Zugehörigkeitsänderung entfernt"\n ],\n "%1$s has been removed for not being a member": [\n null,\n "%1$s ist kein Mitglied und wurde daher entfernt"\n ],\n "Your nickname has been automatically set to: %1$s": [\n null,\n "Ihr Spitzname wurde automatisiert geändert zu: %1$s"\n ],\n "Your nickname has been changed to: %1$s": [\n null,\n "Ihr Spitzname wurde geändert zu: %1$s"\n ],\n "Message": [\n null,\n "Nachricht"\n ],\n "Close and leave this room": [\n null,\n "Schließe und verlasse diesen Raum"\n ],\n "Configure this room": [\n null,\n "Einstellungsänderungen an diesem Raum vornehmen"\n ],\n "Hide the list of occupants": [\n null,\n "Teilnehmerliste ausblenden"\n ],\n "${command}": [\n null,\n "${command}"\n ],\n "Are you sure you want to clear the messages from this room?": [\n null,\n "Sind Sie sicher, dass Sie alle Nachrichten in diesem Raum löschen möchten?"\n ],\n "Error: could not execute the command": [\n null,\n "Fehler: Konnte den Befehl nicht ausführen"\n ],\n "Change user\'s affiliation to admin": [\n null,\n "Ändere die Zugehörigkeit des Benutzers zu Administrator"\n ],\n "Ban user from room": [\n null,\n "Verbanne einen Benutzer aus dem Raum"\n ],\n "Change user role to occupant": [\n null,\n "Benutzerrolle zu Teilnehmer ändern"\n ],\n "Kick user from room": [\n null,\n "Werfe Benutzer aus dem Raum"\n ],\n "Write in 3rd person": [\n null,\n "In der dritten Person schreiben"\n ],\n "Grant membership to a user": [\n null,\n "Gewähre einem Benutzer Mitgliedschaft"\n ],\n "Remove user\'s ability to post messages": [\n null,\n "Entferne die Möglichkeit des Benutzers Nachrichten zu senden"\n ],\n "Change your nickname": [\n null,\n "Spitznamen ändern"\n ],\n "Grant moderator role to user": [\n null,\n "Gebe Benutzer Moderatorrechte"\n ],\n "Grant ownership of this room": [\n null,\n "Besitzrechte an diesem Raum vergeben"\n ],\n "Revoke user\'s membership": [\n null,\n "Widerrufe die Mitgliedschaft des Benutzers"\n ],\n "Set room subject": [\n null,\n "Chatraum Thema festlegen"\n ],\n "Set room subject (alias for /subject)": [\n null,\n "Setze Raumthema (alias für /subject)"\n ],\n "Allow muted user to post messages": [\n null,\n "Erlaube stummgeschaltetem Benutzer Nachrichten zu senden"\n ],\n "The nickname you chose is reserved or currently in use, please choose a different one.": [\n null,\n "Der gewählte Spitzname ist reserviert oder derzeit in Gebrauch. Bitte wähle einen Anderen."\n ],\n "Please choose your nickname": [\n null,\n "Wähle deinen Spitznamen"\n ],\n "Nickname": [\n null,\n "Spitzname"\n ],\n "Enter room": [\n null,\n "Betrete Raum"\n ],\n "This chatroom requires a password": [\n null,\n "Dieser Raum erfordert ein Passwort"\n ],\n "Password: ": [\n null,\n "Passwort: "\n ],\n "Submit": [\n null,\n "Abschicken"\n ],\n "This action was done by %1$s.": [\n null,\n "Diese Aktion wurde ausgeführt durch %1$s."\n ],\n "The reason given is: \\"%1$s\\".": [\n null,\n "Die angegebene Begründung lautet: \\"%1$s\\"."\n ],\n "${notification.reason}": [\n null,\n "${notification.reason}"\n ],\n " has left the room. \\"": [\n null,\n " hat den Raum verlassen. \\""\n ],\n " has left the room": [\n null,\n " hat den Raum verlassen"\n ],\n " has joined the room. \\"": [\n null,\n " hat den Raum betreten. \\""\n ],\n " has joined the room.": [\n null,\n " ist dem Raum beigetreten."\n ],\n "You are not on the member list of this room.": [\n null,\n "Sie sind nicht auf der Mitgliederliste dieses Raums."\n ],\n "You have been banned from this room.": [\n null,\n "Sie sind aus diesem Raum verbannt worden."\n ],\n "No nickname was specified.": [\n null,\n "Kein Spitzname festgelegt."\n ],\n "You are not allowed to create new rooms.": [\n null,\n "Es ist Ihnen nicht erlaubt neue Räume anzulegen."\n ],\n "Your nickname doesn\'t conform to this room\'s policies.": [\n null,\n "Ungültiger Spitzname."\n ],\n "This room does not (yet) exist.": [\n null,\n "Dieser Raum existiert (noch) nicht."\n ],\n "This room has reached its maximum number of occupants.": [\n null,\n "Maximale Anzahl an Mitgliedern für diesen Raum erreicht"\n ],\n "Topic set by %1$s to: %2$s": [\n null,\n "%1$s hat das Thema zu \\"%2$s\\" geändert"\n ],\n "This user is a moderator.": [\n null,\n "Dieser Benutzer ist ein Moderator."\n ],\n "This user can send messages in this room.": [\n null,\n "Dieser Benutzer kann Nachrichten in diesem Raum verschicken."\n ],\n "This user can NOT send messages in this room.": [\n null,\n "Dieser Benutzer kann keine Nachrichten in diesem Raum verschicken."\n ],\n "Occupants": [\n null,\n "Teilnehmer/Innen"\n ],\n "Invite": [\n null,\n "Einladen"\n ],\n "Features": [\n null,\n "Funktionen"\n ],\n "Hidden": [\n null,\n "Versteckt"\n ],\n "Message archiving": [\n null,\n "Nachrichten Archivierung"\n ],\n "Members only": [\n null,\n "Nur Mitglieder"\n ],\n "Moderated": [\n null,\n "Moderiert"\n ],\n "Non-anonymous": [\n null,\n "Nicht anonym"\n ],\n "Open": [\n null,\n "Offen"\n ],\n "Password protected": [\n null,\n "Passwort geschützt"\n ],\n "Persistent": [\n null,\n "Dauerhaft"\n ],\n "Public": [\n null,\n "Öffentlich"\n ],\n "Semi-anonymous": [\n null,\n "Teils anonym"\n ],\n "Temporary": [\n null,\n "Vorübergehend"\n ],\n "Unmoderated": [\n null,\n "Unmoderiert"\n ],\n "Unsecured": [\n null,\n "Ungeschützt"\n ],\n "This room is not publicly searchable": [\n null,\n "Dieser Raum ist nicht suchbar"\n ],\n "Messages are archived on the server": [\n null,\n "Nachrichten werden auf dem Server archiviert"\n ],\n "This room is restricted to members only": [\n null,\n "Dieser Raum ist nur für Mitglieder zugänglich"\n ],\n "This room is being moderated": [\n null,\n "Dieser Raum ist moderiert"\n ],\n "All other room occupants can see your XMPP username": [\n null,\n "Jeder in dem Raum kann deine XMPP/ Jabber ID sehen"\n ],\n "Anyone can join this room": [\n null,\n "Jeder kann diesen Raum betreten"\n ],\n "This room requires a password before entry": [\n null,\n "Dieser Raum erfordert ein Passwort"\n ],\n "This room persists even if it\'s unoccupied": [\n null,\n "Dieser Raum bleibt auch wenn Niemand in ihm ist bestehen"\n ],\n "This room is publicly searchable": [\n null,\n "Dieser Raum ist per Suche auffindbar"\n ],\n "Only moderators can see your XMPP username": [\n null,\n "Nur Moderatoren können deine XMPP/ Jabber ID sehen"\n ],\n "This room will disappear once the last person leaves": [\n null,\n "Dieser Raum verschwindet sobald diesen die letzte Person verlassen hat"\n ],\n "This room is not being moderated": [\n null,\n "Dieser Raum ist unmoderiert"\n ],\n "This room does not require a password upon entry": [\n null,\n "Dieser Raum erfordert kein Passwort"\n ],\n "You are about to invite %1$s to the chat room \\"%2$s\\". ": [\n null,\n "Du bist gerade dabei %1$s in den Raum \\"%2$s\\" einzuladen. "\n ],\n "You may optionally include a message, explaining the reason for the invitation.": [\n null,\n "Du kannst optional eine Nachricht mit den Gründen der Einladung mitsenden."\n ],\n "Please enter a valid XMPP username": [\n null,\n "Bitte geben Sie eine gültige XMPP/ Jabber ID an"\n ],\n "Room name": [\n null,\n "Raumname"\n ],\n "Server": [\n null,\n "Server"\n ],\n "Join Room": [\n null,\n "Raum betreten"\n ],\n "Show rooms": [\n null,\n "Räume anzeigen"\n ],\n "Rooms": [\n null,\n "Räume"\n ],\n "No rooms on %1$s": [\n null,\n "Keine Räume auf %1$s"\n ],\n "Description:": [\n null,\n "Beschreibung:"\n ],\n "Room Address (JID):": [\n null,\n "XMPP/ Jabber ID (JID) dieses Raumes:"\n ],\n "Occupants:": [\n null,\n "Teilnehmer:"\n ],\n "Features:": [\n null,\n "Funktionen:"\n ],\n "Requires authentication": [\n null,\n "Authentifizierung erforderlich"\n ],\n "Requires an invitation": [\n null,\n "Einladung erforderlich"\n ],\n "Open room": [\n null,\n "Offener Raum"\n ],\n "Permanent room": [\n null,\n "Dauerhafter Raum"\n ],\n "Temporary room": [\n null,\n "Vorübergehender Raum"\n ],\n "%1$s has invited you to join a chat room: %2$s": [\n null,\n "%1$s hat Sie in den Raum \\"%2$s\\" eingeladen"\n ],\n "%1$s has invited you to join a chat room: %2$s, and left the following reason: \\"%3$s\\"": [\n null,\n "%1$s hat Sie in den Raum \\"%2$s\\" eingeladen. Begründung: \\"%3$s\\""\n ],\n "Notification from %1$s": [\n null,\n "Benachrichtigung von %1$s"\n ],\n "%1$s says": [\n null,\n "%1$s sagt"\n ],\n "has come online": [\n null,\n "kam online"\n ],\n "wants to be your contact": [\n null,\n "will dein Kontakt sein"\n ],\n "Re-establishing encrypted session": [\n null,\n "Verschlüsselte Sitzung wiederherstellen"\n ],\n "Generating private key.": [\n null,\n "Generiere privaten Schlüssel."\n ],\n "Your browser might become unresponsive.": [\n null,\n "Ihr Browser könnte langsam reagieren."\n ],\n "Authentication request from %1$s\\n\\nYour chat contact is attempting to verify your identity, by asking you the question below.\\n\\n%2$s": [\n null,\n "Authentifizierungsanfrage von %1$s\\n\\nIhr Kontakt möchte durch die folgende Frage Ihre Identität verifizieren:\\n\\n%2$s"\n ],\n "Could not verify this user\'s identify.": [\n null,\n "Die Identität des Benutzers konnte nicht verifiziert werden."\n ],\n "Exchanging private key with contact.": [\n null,\n "Tausche private Schlüssel mit Kontakt aus."\n ],\n "Your messages are not encrypted anymore": [\n null,\n "Deine Nachrichten sind nicht mehr verschlüsselt"\n ],\n "Your messages are now encrypted but your contact\'s identity has not been verified.": [\n null,\n "Deine Nachrichten sind ab jetzt verschlüsselt, aber die Identität des Kontaktes wurde noch nicht bestätigt."\n ],\n "Your contact\'s identify has been verified.": [\n null,\n "Die Identität des Kontakts wurde bestätigt."\n ],\n "Your contact has ended encryption on their end, you should do the same.": [\n null,\n "Dein Kontakt hat die Verschlüsselung deaktiviert, du solltest das gleiche tun."\n ],\n "Your message could not be sent": [\n null,\n "Ihre Nachricht konnte nicht gesendet werden"\n ],\n "We received an unencrypted message": [\n null,\n "Wir haben eine unverschlüsselte Nachricht empfangen"\n ],\n "We received an unreadable encrypted message": [\n null,\n "Wir haben eine unlesbare Nachricht empfangen"\n ],\n "Here are the fingerprints, please confirm them with %1$s, outside of this chat.\\n\\nFingerprint for you, %2$s: %3$s\\n\\nFingerprint for %1$s: %4$s\\n\\nIf you have confirmed that the fingerprints match, click OK, otherwise click Cancel.": [\n null,\n "Hier sind die Fingerabdrücke, bitte bestätige diese mit %1$s, außerhalb von diesem Chat\\n\\nFingerabdruck für dich, %2$s: %3$s\\n\\nFingerabdruck für %1$s: %4$s\\n\\nWenn du überprüft hast, dass die Fingerabdrücke zusammenpassen, drücke OK, andernfalls Abbrechen."\n ],\n "You will be prompted to provide a security question and then an answer to that question.\\n\\nYour contact will then be prompted the same question and if they type the exact same answer (case sensitive), their identity will be verified.": [\n null,\n "Sie werden im folgenden nach einer Sicherheitsfrage und dann nach dessen Antwort gefragt.\\n\\nIhr Kontakt wird dann die Sicherheitsfrage lesen und die Antwort korrekt beantworten müssen (Groß- und Kleinschreibung beachten!) um die Identitäten zu überprüfen."\n ],\n "What is your security question?": [\n null,\n "Wie lautet Ihre Sicherheitsfrage?"\n ],\n "What is the answer to the security question?": [\n null,\n "Wie lautet die Antwort Ihrer Sicherheitsfrage?"\n ],\n "Invalid authentication scheme provided": [\n null,\n "Ungültiges Authentifizierungsmuster wurde zur Verfügung gestellt"\n ],\n "Your messages are not encrypted. Click here to enable OTR encryption.": [\n null,\n "Ihre Nachricht ist unverschlüsselt. Klicken Sie hier um OTR Verschlüsselung zu aktivieren."\n ],\n "Your messages are encrypted, but your contact has not been verified.": [\n null,\n "Ihre Nachrichten werden verschlüsselt aber Ihr Kontakt wurde noch nicht verifiziert/ bestätigt."\n ],\n "Your messages are encrypted and your contact verified.": [\n null,\n "Ihre Nachrichten werden verschlüsselt und Ihr Kontakt wurde bestätigt."\n ],\n "Your contact has closed their end of the private session, you should do the same": [\n null,\n "Ihr Kontakt hat die private Sitzung geschlossen. Sie sollten das gleiche tun."\n ],\n "End encrypted conversation": [\n null,\n "Beende die verschlüsselte Unterhaltung"\n ],\n "Refresh encrypted conversation": [\n null,\n "Verschlüsselte Unterhaltung aktualisieren"\n ],\n "Start encrypted conversation": [\n null,\n "Beginn einer verschlüsselten Unterhaltung"\n ],\n "Verify with fingerprints": [\n null,\n "Überprüfung mit Fingerabdruck"\n ],\n "Verify with SMP": [\n null,\n "Überprüfung mit SMP"\n ],\n "What\'s this?": [\n null,\n "Was ist das?"\n ],\n "unencrypted": [\n null,\n "unverschlüsselt"\n ],\n "unverified": [\n null,\n "nicht verifiziert"\n ],\n "verified": [\n null,\n "verifiziert"\n ],\n "finished": [\n null,\n "erledigt"\n ],\n " e.g. conversejs.org": [\n null,\n " z. B. conversejs.org"\n ],\n "Your XMPP provider\'s domain name:": [\n null,\n "Ihr XMPP/ Jabber Provider Domain Name:"\n ],\n "Fetch registration form": [\n null,\n ""\n ],\n "Tip: A list of public XMPP providers is available": [\n null,\n "Tipp: Eine Liste öffentlicher Provider ist verfügbar"\n ],\n "here": [\n null,\n "hier"\n ],\n "Register": [\n null,\n "Registrierung"\n ],\n "Sorry, the given provider does not support in band account registration. Please try with a different provider.": [\n null,\n "Entschuldigung: Dieser Provider erlaubt keine direkte Benutzer- Registrierung. Versuchen Sie einen anderen Provider oder erstellen Sie einen Zugang beim Provider direkt."\n ],\n "Requesting a registration form from the XMPP server": [\n null,\n ""\n ],\n "Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?": [\n null,\n "Etwas schlägt fehl beim Versuch eine Verbindung mit \\"%1$s\\" her zu stellen. Sicher das \\"%1$s\\" existiert?"\n ],\n "Now logging you in": [\n null,\n "Sie werden angemeldet"\n ],\n "Registered successfully": [\n null,\n "Registrierung erfolgreich"\n ],\n "The provider rejected your registration attempt. Please check the values you entered for correctness.": [\n null,\n "Der Provider hat die Registrierung abgelehnt. Bitte überprüfen Sie Ihre Angaben auf Richtigkeit."\n ],\n "Retry": [\n null,\n "Wiederholen"\n ],\n "Click to toggle the rooms list": [\n null,\n "Umschalten der Raum listen"\n ],\n "Open Rooms": [\n null,\n "Offene Räume"\n ],\n "Are you sure you want to leave the room \\"%1$s\\"?": [\n null,\n "Wollen Sie diesen Raum \\"%1$s\\" wirklich verlassen?"\n ],\n "This contact is busy": [\n null,\n "Dieser Kontakt ist beschäftigt"\n ],\n "This contact is online": [\n null,\n "Dieser Kontakt ist online"\n ],\n "This contact is offline": [\n null,\n "Dieser Kontakt ist offline"\n ],\n "This contact is unavailable": [\n null,\n "Dieser Kontakt ist nicht verfügbar"\n ],\n "This contact is away for an extended period": [\n null,\n "Dieser Kontakt ist für längere Zeit abwesend"\n ],\n "This contact is away": [\n null,\n "Dieser Kontakt ist abwesend"\n ],\n "Groups": [\n null,\n "Gruppen"\n ],\n "My contacts": [\n null,\n "Meine Kontakte"\n ],\n "Pending contacts": [\n null,\n "Unbestätigte Kontakte"\n ],\n "Contact requests": [\n null,\n "Kontaktanfragen"\n ],\n "Ungrouped": [\n null,\n "Ungruppiert"\n ],\n "Filter": [\n null,\n "Filter"\n ],\n "State": [\n null,\n "Staat"\n ],\n "Any": [\n null,\n ""\n ],\n "Unread": [\n null,\n "Ungelesen"\n ],\n "Chatty": [\n null,\n ""\n ],\n "Extended Away": [\n null,\n "Länger nicht anwesend"\n ],\n "Click to remove %1$s as a contact": [\n null,\n "Hier klicken um %1$s zu entfernen"\n ],\n "Click to accept the contact request from %1$s": [\n null,\n "Hier klicken um die Kontaktanfrage von %1$s zu akzeptieren"\n ],\n "Click to decline the contact request from %1$s": [\n null,\n "Hier klicken um die Kontaktanfrage von %1$s abzulehnen"\n ],\n "Click to chat with this contact": [\n null,\n "Hier klicken um mit diesem Kontakt zu chatten"\n ],\n "Name": [\n null,\n "Name"\n ],\n "Are you sure you want to remove this contact?": [\n null,\n "Wollen Sie diesen Kontakt wirklich entfernen?"\n ],\n "Are you sure you want to decline this contact request?": [\n null,\n "Wollen Sie diese Kontaktanfrage wirklich ablehnen?"\n ]\n }\n }\n}';}); define('text!es',[],function () { return '{\n "domain": "converse",\n "locale_data": {\n "converse": {\n "": {\n "domain": "converse",\n "plural_forms": "nplurals=2; plural=(n != 1);",\n "lang": "es"\n },\n "Bookmark this room": [\n null,\n ""\n ],\n "The name for this bookmark:": [\n null,\n ""\n ],\n "Would you like this room to be automatically joined upon startup?": [\n null,\n ""\n ],\n "What should your nickname for this room be?": [\n null,\n ""\n ],\n "Save": [\n null,\n "Guardar"\n ],\n "Cancel": [\n null,\n "Cancelar"\n ],\n "Sorry, something went wrong while trying to save your bookmark.": [\n null,\n ""\n ],\n "Bookmarks": [\n null,\n ""\n ],\n "Remove this bookmark": [\n null,\n ""\n ],\n "Show more information on this room": [\n null,\n "Mostrar más información en esta sala"\n ],\n "Click to open this room": [\n null,\n "Haga click para abrir esta sala"\n ],\n "Personal message": [\n null,\n "Mensaje personal"\n ],\n "Send": [\n null,\n ""\n ],\n "me": [\n null,\n "yo"\n ],\n "A very large message has been received.This might be due to an attack meant to degrade the chat performance.Output has been shortened.": [\n null,\n ""\n ],\n "Typing from another device": [\n null,\n ""\n ],\n "is typing": [\n null,\n ""\n ],\n "Stopped typing on the other device": [\n null,\n ""\n ],\n "has stopped typing": [\n null,\n ""\n ],\n "Show this menu": [\n null,\n "Mostrar este menú"\n ],\n "Write in the third person": [\n null,\n "Escribir en tercera persona"\n ],\n "Remove messages": [\n null,\n "Eliminar mensajes"\n ],\n "Are you sure you want to clear the messages from this chat box?": [\n null,\n "¿Está seguro de querer limpiar los mensajes de esta conversación?"\n ],\n "Insert a smiley": [\n null,\n ""\n ],\n "Start a call": [\n null,\n ""\n ],\n "Contacts": [\n null,\n "Contactos"\n ],\n "Password:": [\n null,\n "Contraseña:"\n ],\n "Log In": [\n null,\n "Iniciar sesión"\n ],\n "user@server": [\n null,\n ""\n ],\n "Sign in": [\n null,\n "Registrar"\n ],\n "I am %1$s": [\n null,\n "Estoy %1$s"\n ],\n "Click here to write a custom status message": [\n null,\n "Haga click para escribir un mensaje de estatus personalizado"\n ],\n "Click to change your chat status": [\n null,\n "Haga click para cambiar su estatus de chat"\n ],\n "Custom status": [\n null,\n "Personalizar estatus"\n ],\n "online": [\n null,\n "en línea"\n ],\n "busy": [\n null,\n "ocupado"\n ],\n "away for long": [\n null,\n "ausente por mucho tiempo"\n ],\n "away": [\n null,\n "ausente"\n ],\n "Online": [\n null,\n "En línea"\n ],\n "Busy": [\n null,\n "Ocupado"\n ],\n "Away": [\n null,\n "Ausente"\n ],\n "Offline": [\n null,\n "Desconectado"\n ],\n "Click to add new chat contacts": [\n null,\n "Haga click para agregar nuevos contactos al chat"\n ],\n "Add a contact": [\n null,\n "Agregar un contacto"\n ],\n "Contact name": [\n null,\n "Nombre de contacto"\n ],\n "Search": [\n null,\n "Búsqueda"\n ],\n "e.g. user@example.org": [\n null,\n ""\n ],\n "Add": [\n null,\n "Agregar"\n ],\n "No users found": [\n null,\n "Sin usuarios encontrados"\n ],\n "This client does not allow presence subscriptions": [\n null,\n ""\n ],\n "Minimize this chat box": [\n null,\n ""\n ],\n "Click to restore this chat": [\n null,\n "Haga click para eliminar este contacto"\n ],\n "Minimized": [\n null,\n "Minimizado"\n ],\n "This room is not anonymous": [\n null,\n "Esta sala no es para usuarios anónimos"\n ],\n "This room now shows unavailable members": [\n null,\n "Esta sala ahora muestra los miembros no disponibles"\n ],\n "This room does not show unavailable members": [\n null,\n "Esta sala no muestra los miembros no disponibles"\n ],\n "Room logging is now enabled": [\n null,\n "El registro de la sala ahora está habilitado"\n ],\n "Room logging is now disabled": [\n null,\n "El registro de la sala ahora está deshabilitado"\n ],\n "This room is now semi-anonymous": [\n null,\n "Esta sala ahora es semi-anónima"\n ],\n "This room is now fully-anonymous": [\n null,\n "Esta sala ahora es completamente anónima"\n ],\n "A new room has been created": [\n null,\n "Una nueva sala ha sido creada"\n ],\n "You have been banned from this room": [\n null,\n "Usted ha sido bloqueado de esta sala"\n ],\n "You have been kicked from this room": [\n null,\n "Usted ha sido expulsado de esta sala"\n ],\n "You have been removed from this room because of an affiliation change": [\n null,\n "Usted ha sido eliminado de esta sala debido a un cambio de afiliación"\n ],\n "You have been removed from this room because the room has changed to members-only and you\'re not a member": [\n null,\n "Usted ha sido eliminado de esta sala debido a que la sala cambio su configuración a solo-miembros y usted no es un miembro"\n ],\n "You have been removed from this room because the MUC (Multi-user chat) service is being shut down.": [\n null,\n "Usted ha sido eliminado de esta sala debido a que el servicio MUC (Multi-user chat) está deshabilitado."\n ],\n "Message": [\n null,\n "Mensaje"\n ],\n "Hide the list of occupants": [\n null,\n ""\n ],\n "${command}": [\n null,\n ""\n ],\n "Are you sure you want to clear the messages from this room?": [\n null,\n "¿Está seguro de querer limpiar los mensajes de esta sala?"\n ],\n "Error: could not execute the command": [\n null,\n ""\n ],\n "Change user\'s affiliation to admin": [\n null,\n ""\n ],\n "Change user role to occupant": [\n null,\n ""\n ],\n "Grant membership to a user": [\n null,\n ""\n ],\n "Remove user\'s ability to post messages": [\n null,\n ""\n ],\n "Change your nickname": [\n null,\n ""\n ],\n "Grant moderator role to user": [\n null,\n ""\n ],\n "Revoke user\'s membership": [\n null,\n ""\n ],\n "Set room subject (alias for /subject)": [\n null,\n ""\n ],\n "Allow muted user to post messages": [\n null,\n ""\n ],\n "The nickname you chose is reserved or currently in use, please choose a different one.": [\n null,\n ""\n ],\n "Please choose your nickname": [\n null,\n ""\n ],\n "Nickname": [\n null,\n "Apodo"\n ],\n "This chatroom requires a password": [\n null,\n "Esta sala de chat requiere una contraseña."\n ],\n "Password: ": [\n null,\n "Contraseña: "\n ],\n "Submit": [\n null,\n "Enviar"\n ],\n "The reason given is: \\"%1$s\\".": [\n null,\n ""\n ],\n "${notification.reason}": [\n null,\n ""\n ],\n " has left the room. \\"": [\n null,\n ""\n ],\n " has joined the room. \\"": [\n null,\n ""\n ],\n " has joined the room.": [\n null,\n ""\n ],\n "Topic set by %1$s to: %2$s": [\n null,\n "Tema fijado por %1$s a: %2$s"\n ],\n "Occupants": [\n null,\n "Ocupantes"\n ],\n "Invite": [\n null,\n ""\n ],\n "Hidden": [\n null,\n "Oculto"\n ],\n "Message archiving": [\n null,\n ""\n ],\n "Members only": [\n null,\n ""\n ],\n "Moderated": [\n null,\n "Moderado"\n ],\n "Non-anonymous": [\n null,\n "No anónimo"\n ],\n "Persistent": [\n null,\n ""\n ],\n "Public": [\n null,\n "Pública"\n ],\n "Semi-anonymous": [\n null,\n "Semi anónimo"\n ],\n "Unmoderated": [\n null,\n "Sin moderar"\n ],\n "Unsecured": [\n null,\n ""\n ],\n "Messages are archived on the server": [\n null,\n ""\n ],\n "All other room occupants can see your XMPP username": [\n null,\n ""\n ],\n "This room persists even if it\'s unoccupied": [\n null,\n ""\n ],\n "Only moderators can see your XMPP username": [\n null,\n ""\n ],\n "This room will disappear once the last person leaves": [\n null,\n ""\n ],\n "You are about to invite %1$s to the chat room \\"%2$s\\". ": [\n null,\n ""\n ],\n "You may optionally include a message, explaining the reason for the invitation.": [\n null,\n ""\n ],\n "Please enter a valid XMPP username": [\n null,\n ""\n ],\n "Room name": [\n null,\n "Nombre de sala"\n ],\n "Server": [\n null,\n "Servidor"\n ],\n "Show rooms": [\n null,\n "Mostrar salas"\n ],\n "Rooms": [\n null,\n "Salas"\n ],\n "No rooms on %1$s": [\n null,\n "Sin salas en %1$s"\n ],\n "Description:": [\n null,\n "Descripción"\n ],\n "Room Address (JID):": [\n null,\n ""\n ],\n "Occupants:": [\n null,\n "Ocupantes:"\n ],\n "Features:": [\n null,\n "Características:"\n ],\n "Requires authentication": [\n null,\n "Autenticación requerida"\n ],\n "Requires an invitation": [\n null,\n "Requiere una invitación"\n ],\n "Open room": [\n null,\n "Abrir sala"\n ],\n "Permanent room": [\n null,\n "Sala permanente"\n ],\n "Temporary room": [\n null,\n "Sala temporal"\n ],\n "%1$s has invited you to join a chat room: %2$s": [\n null,\n ""\n ],\n "%1$s has invited you to join a chat room: %2$s, and left the following reason: \\"%3$s\\"": [\n null,\n ""\n ],\n "Notification from %1$s": [\n null,\n ""\n ],\n "%1$s says": [\n null,\n ""\n ],\n "wants to be your contact": [\n null,\n ""\n ],\n "Re-establishing encrypted session": [\n null,\n "Re-estableciendo sesión cifrada"\n ],\n "Generating private key.": [\n null,\n "Generando llave privada"\n ],\n "Your browser might become unresponsive.": [\n null,\n "Su navegador podría dejar de responder por un momento"\n ],\n "Could not verify this user\'s identify.": [\n null,\n "No se pudo verificar la identidad de este usuario"\n ],\n "Your messages are not encrypted anymore": [\n null,\n "Sus mensajes han dejado de cifrarse"\n ],\n "Your message could not be sent": [\n null,\n "Su mensaje no se pudo enviar"\n ],\n "We received an unencrypted message": [\n null,\n "Se recibío un mensaje sin cifrar"\n ],\n "We received an unreadable encrypted message": [\n null,\n "Se recibío un mensaje cifrado corrupto"\n ],\n "Here are the fingerprints, please confirm them with %1$s, outside of this chat.\\n\\nFingerprint for you, %2$s: %3$s\\n\\nFingerprint for %1$s: %4$s\\n\\nIf you have confirmed that the fingerprints match, click OK, otherwise click Cancel.": [\n null,\n "Por favor confirme los identificadores de %1$s fuera de este chat.\\n\\nSu identificador es, %2$s: %3$s\\n\\nEl identificador de %1$s es: %4$s\\n\\nDespués de confirmar los identificadores haga click en OK, cancele si no concuerdan."\n ],\n "What is your security question?": [\n null,\n "Introduzca su pregunta de seguridad"\n ],\n "What is the answer to the security question?": [\n null,\n "Introduzca la respuesta a su pregunta de seguridad"\n ],\n "Invalid authentication scheme provided": [\n null,\n "Esquema de autenticación inválido"\n ],\n "Your messages are not encrypted. Click here to enable OTR encryption.": [\n null,\n "Sus mensajes no están cifrados. Haga click aquí para habilitar el cifrado OTR"\n ],\n "End encrypted conversation": [\n null,\n "Finalizar sesión cifrada"\n ],\n "Refresh encrypted conversation": [\n null,\n "Actualizar sesión cifrada"\n ],\n "Start encrypted conversation": [\n null,\n "Iniciar sesión cifrada"\n ],\n "Verify with fingerprints": [\n null,\n "Verificar con identificadores"\n ],\n "Verify with SMP": [\n null,\n "Verificar con SMP"\n ],\n "What\'s this?": [\n null,\n "¿Qué es esto?"\n ],\n "unencrypted": [\n null,\n "texto plano"\n ],\n "unverified": [\n null,\n "sin verificar"\n ],\n "verified": [\n null,\n "verificado"\n ],\n "finished": [\n null,\n "finalizado"\n ],\n " e.g. conversejs.org": [\n null,\n ""\n ],\n "Your XMPP provider\'s domain name:": [\n null,\n ""\n ],\n "Fetch registration form": [\n null,\n ""\n ],\n "Tip: A list of public XMPP providers is available": [\n null,\n ""\n ],\n "here": [\n null,\n ""\n ],\n "Register": [\n null,\n ""\n ],\n "Sorry, the given provider does not support in band account registration. Please try with a different provider.": [\n null,\n ""\n ],\n "Requesting a registration form from the XMPP server": [\n null,\n ""\n ],\n "Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?": [\n null,\n ""\n ],\n "Now logging you in": [\n null,\n ""\n ],\n "Registered successfully": [\n null,\n ""\n ],\n "The provider rejected your registration attempt. Please check the values you entered for correctness.": [\n null,\n ""\n ],\n "Retry": [\n null,\n ""\n ],\n "This contact is busy": [\n null,\n "Este contacto está ocupado"\n ],\n "This contact is online": [\n null,\n "Este contacto está en línea"\n ],\n "This contact is offline": [\n null,\n "Este contacto está desconectado"\n ],\n "This contact is unavailable": [\n null,\n "Este contacto no está disponible"\n ],\n "This contact is away for an extended period": [\n null,\n "Este contacto está ausente por un largo periodo de tiempo"\n ],\n "This contact is away": [\n null,\n "Este contacto está ausente"\n ],\n "Groups": [\n null,\n ""\n ],\n "My contacts": [\n null,\n "Mis contactos"\n ],\n "Pending contacts": [\n null,\n "Contactos pendientes"\n ],\n "Contact requests": [\n null,\n "Solicitudes de contacto"\n ],\n "Ungrouped": [\n null,\n ""\n ],\n "Filter": [\n null,\n ""\n ],\n "State": [\n null,\n ""\n ],\n "Any": [\n null,\n ""\n ],\n "Unread": [\n null,\n ""\n ],\n "Chatty": [\n null,\n ""\n ],\n "Extended Away": [\n null,\n ""\n ],\n "Click to chat with this contact": [\n null,\n "Haga click para conversar con este contacto"\n ],\n "Name": [\n null,\n ""\n ],\n "Are you sure you want to remove this contact?": [\n null,\n "¿Esta seguro de querer eliminar este contacto?"\n ]\n }\n }\n}';}); -define('text!fr',[],function () { return '{\n "domain": "converse",\n "locale_data": {\n "converse": {\n "": {\n "domain": "converse",\n "plural_forms": "nplurals=2; plural=n > 1;",\n "lang": "fr"\n },\n "Bookmark this room": [\n null,\n "Marquer ce salon"\n ],\n "The name for this bookmark:": [\n null,\n "Nom de ce marque-page :"\n ],\n "Would you like this room to be automatically joined upon startup?": [\n null,\n "Voulez-vous rejoindre automatiquement ce salon au lancement ?"\n ],\n "What should your nickname for this room be?": [\n null,\n "Quel alias devrait être utilisé pour ce salon ?"\n ],\n "Save": [\n null,\n "Enregistrer"\n ],\n "Cancel": [\n null,\n "Annuler"\n ],\n "Sorry, something went wrong while trying to save your bookmark.": [\n null,\n "Désolé, quelque chose s’est mal passé pendant la sauvegarde de ce marque-page."\n ],\n "Click to toggle the bookmarks list": [\n null,\n "Cliquer pour ouvrir la liste des salons"\n ],\n "Remove this bookmark": [\n null,\n "Supprimer ce marque-page"\n ],\n "Show more information on this room": [\n null,\n "Afficher davantage d’informations sur ce salon"\n ],\n "Click to open this room": [\n null,\n "Cliquer pour ouvrir ce salon"\n ],\n "You have unread messages": [\n null,\n "Vous avez de nouveaux messages"\n ],\n "Close this chat box": [\n null,\n "Fermer cette fenêtre de discussion"\n ],\n "Personal message": [\n null,\n "Message personnel"\n ],\n "Send": [\n null,\n ""\n ],\n "me": [\n null,\n "moi"\n ],\n "A very large message has been received.This might be due to an attack meant to degrade the chat performance.Output has been shortened.": [\n null,\n "Un message très long a été reçu. Cela pourrait être lié à une attaque visant à dégrader la performance de la conversation. La sortie a été tronquée."\n ],\n "Typing from another device": [\n null,\n ""\n ],\n "is typing": [\n null,\n "écrit"\n ],\n "Stopped typing on the other device": [\n null,\n ""\n ],\n "has stopped typing": [\n null,\n "a arrêté d’écrire"\n ],\n "has gone away": [\n null,\n "est parti"\n ],\n "Show this menu": [\n null,\n "Afficher ce menu"\n ],\n "Write in the third person": [\n null,\n "Écrire à la troisième personne"\n ],\n "Remove messages": [\n null,\n "Effacer les messages"\n ],\n "Are you sure you want to clear the messages from this chat box?": [\n null,\n "Voulez-vous vraiment supprimer les messages de cette conversation ?"\n ],\n "has gone offline": [\n null,\n "s’est déconnecté"\n ],\n "is busy": [\n null,\n "est occupé"\n ],\n "Clear all messages": [\n null,\n "Supprimer tous les messages"\n ],\n "Insert a smiley": [\n null,\n "Insérer une émoticône"\n ],\n "Start a call": [\n null,\n "Démarrer un appel"\n ],\n "Contacts": [\n null,\n "Contacts"\n ],\n "XMPP Username:": [\n null,\n "Nom d’utilisateur XMPP :"\n ],\n "Password:": [\n null,\n "Mot de passe :"\n ],\n "Click here to log in anonymously": [\n null,\n "Cliquez ici pour se connecter anonymement"\n ],\n "Log In": [\n null,\n "Se connecter"\n ],\n "Username": [\n null,\n "Nom"\n ],\n "user@server": [\n null,\n "utilisateur@serveur"\n ],\n "password": [\n null,\n "Mot de passe"\n ],\n "Sign in": [\n null,\n "S’inscrire"\n ],\n "I am %1$s": [\n null,\n "Je suis %1$s"\n ],\n "Click here to write a custom status message": [\n null,\n "Cliquez ici pour indiquer votre statut personnel"\n ],\n "Click to change your chat status": [\n null,\n "Cliquez pour changer votre statut"\n ],\n "Custom status": [\n null,\n "Statut personnel"\n ],\n "online": [\n null,\n "en ligne"\n ],\n "busy": [\n null,\n "occupé"\n ],\n "away for long": [\n null,\n "absent pour une longue durée"\n ],\n "away": [\n null,\n "absent"\n ],\n "offline": [\n null,\n "Déconnecté"\n ],\n "Online": [\n null,\n "En ligne"\n ],\n "Busy": [\n null,\n "Occupé"\n ],\n "Away": [\n null,\n "Absent"\n ],\n "Offline": [\n null,\n "Déconnecté"\n ],\n "Log out": [\n null,\n "Se déconnecter"\n ],\n "Click to add new chat contacts": [\n null,\n "Cliquez pour ajouter de nouveaux contacts"\n ],\n "Add a contact": [\n null,\n "Ajouter un contact"\n ],\n "Contact name": [\n null,\n "Nom du contact"\n ],\n "Search": [\n null,\n "Rechercher"\n ],\n "e.g. user@example.org": [\n null,\n "e.g. utilisateur@exemple.org"\n ],\n "Add": [\n null,\n "Ajouter"\n ],\n "No users found": [\n null,\n "Aucun utilisateur trouvé"\n ],\n "This client does not allow presence subscriptions": [\n null,\n "Ce client ne permet pas les mises à jour de disponibilité"\n ],\n "Click to hide these contacts": [\n null,\n "Cliquez pour cacher ces contacts"\n ],\n "Close this box": [\n null,\n "Fermer cette fenêtre"\n ],\n "Minimize this chat box": [\n null,\n "Réduire cette fenêtre de discussion"\n ],\n "Click to restore this chat": [\n null,\n "Cliquez pour afficher cette discussion"\n ],\n "Minimized": [\n null,\n "Réduit(s)"\n ],\n "This room is not anonymous": [\n null,\n "Ce salon n’est pas anonyme"\n ],\n "This room now shows unavailable members": [\n null,\n "Ce salon affiche maintenant les membres indisponibles"\n ],\n "This room does not show unavailable members": [\n null,\n "Ce salon n’affiche pas les membres indisponibles"\n ],\n "The room configuration has changed": [\n null,\n "Les paramètres de ce salon ont été modifiés"\n ],\n "Room logging is now enabled": [\n null,\n "Le logging du salon est activé"\n ],\n "Room logging is now disabled": [\n null,\n "Le logging du salon est désactivé"\n ],\n "This room is now no longer anonymous": [\n null,\n "Ce salon n’est plus anonyme"\n ],\n "This room is now semi-anonymous": [\n null,\n "Ce salon est maintenant semi-anonyme"\n ],\n "This room is now fully-anonymous": [\n null,\n "Ce salon est maintenant entièrement anonyme"\n ],\n "A new room has been created": [\n null,\n "Un nouveau salon a été créé"\n ],\n "You have been banned from this room": [\n null,\n "Vous avez été banni de ce salon"\n ],\n "You have been kicked from this room": [\n null,\n "Vous avez été expulsé de ce salon"\n ],\n "You have been removed from this room because of an affiliation change": [\n null,\n "Vous avez été retiré de ce salon du fait d’un changement d’affiliation"\n ],\n "You have been removed from this room because the room has changed to members-only and you\'re not a member": [\n null,\n "Vous avez été retiré de ce salon parce que ce salon est devenu réservé aux membres et vous n’êtes pas membre"\n ],\n "You have been removed from this room because the MUC (Multi-user chat) service is being shut down.": [\n null,\n "Vous avez été retiré de ce salon parce que le service de chat multi-utilisateur a été désactivé."\n ],\n "%1$s has been banned": [\n null,\n "%1$s a été banni"\n ],\n "%1$s\'s nickname has changed": [\n null,\n "L’alias de %1$s a changé"\n ],\n "%1$s has been kicked out": [\n null,\n "%1$s a été expulsé"\n ],\n "%1$s has been removed because of an affiliation change": [\n null,\n "%1$s a été supprimé à cause d’un changement d’affiliation"\n ],\n "%1$s has been removed for not being a member": [\n null,\n "%1$s a été supprimé car il n’est pas membre"\n ],\n "Your nickname has been automatically set to: %1$s": [\n null,\n "Votre alias a été automatiquement déterminé en : %1$s"\n ],\n "Your nickname has been changed to: %1$s": [\n null,\n "Votre alias a été modifié en : %1$s"\n ],\n "Message": [\n null,\n "Message"\n ],\n "Close and leave this room": [\n null,\n "Fermer et quitter ce salon"\n ],\n "Configure this room": [\n null,\n "Configurer ce salon"\n ],\n "Hide the list of occupants": [\n null,\n "Cacher la liste des participants"\n ],\n "${command}": [\n null,\n ""\n ],\n "Are you sure you want to clear the messages from this room?": [\n null,\n "Voulez-vous vraiment supprimer les messages de ce salon ?"\n ],\n "Error: could not execute the command": [\n null,\n "Erreur : la commande ne peut pas être exécutée"\n ],\n "Change user\'s affiliation to admin": [\n null,\n "Changer le rôle de l’utilisateur en administrateur"\n ],\n "Ban user from room": [\n null,\n "Bannir l’utilisateur du salon"\n ],\n "Change user role to occupant": [\n null,\n "Changer le rôle de l’utilisateur en participant"\n ],\n "Kick user from room": [\n null,\n "Expulser l’utilisateur du salon"\n ],\n "Write in 3rd person": [\n null,\n "Écrire à la troisième personne"\n ],\n "Grant membership to a user": [\n null,\n "Autoriser l’utilisateur à être membre"\n ],\n "Remove user\'s ability to post messages": [\n null,\n "Retirer le droit d’envoyer des messages"\n ],\n "Change your nickname": [\n null,\n "Changer votre alias"\n ],\n "Grant moderator role to user": [\n null,\n "Changer le rôle de l’utilisateur en modérateur"\n ],\n "Grant ownership of this room": [\n null,\n "Accorder la propriété à ce salon"\n ],\n "Revoke user\'s membership": [\n null,\n "Révoquer l’utilisateur des membres"\n ],\n "Set room subject": [\n null,\n "Indiquer le sujet du salon"\n ],\n "Set room subject (alias for /subject)": [\n null,\n "Définir le sujet de la salle (alias pour /subject)"\n ],\n "Allow muted user to post messages": [\n null,\n "Autoriser les utilisateurs muets à poster des messages"\n ],\n "The nickname you chose is reserved or currently in use, please choose a different one.": [\n null,\n "L’alias choisi est réservé ou actuellment utilisé, veuillez en choisir un différent."\n ],\n "Please choose your nickname": [\n null,\n "Veuillez choisir votre alias"\n ],\n "Nickname": [\n null,\n "Alias"\n ],\n "Enter room": [\n null,\n "Entrer dans le salon"\n ],\n "This chatroom requires a password": [\n null,\n "Ce salon nécessite un mot de passe"\n ],\n "Password: ": [\n null,\n "Mot de passe : "\n ],\n "Submit": [\n null,\n "Soumettre"\n ],\n "This action was done by %1$s.": [\n null,\n "L’action a été réalisée par %1$s."\n ],\n "The reason given is: \\"%1$s\\".": [\n null,\n "La raison indiquée est : « %1$s »."\n ],\n "${notification.reason}": [\n null,\n ""\n ],\n " has left the room. \\"": [\n null,\n " a quitté le salon. \\""\n ],\n " has left the room": [\n null,\n " a quitté le salon"\n ],\n " has joined the room. \\"": [\n null,\n " a rejoint le salon. \\""\n ],\n " has joined the room.": [\n null,\n " a rejoint le salon."\n ],\n "Topic set by %1$s to: %2$s": [\n null,\n "Le sujet « %2$s » a été défini par %1$s"\n ],\n "This user is a moderator.": [\n null,\n "Cet utilisateur est un modérateur."\n ],\n "This user can send messages in this room.": [\n null,\n "Cet utilisateur peut envoyer des messages dans ce salon."\n ],\n "This user can NOT send messages in this room.": [\n null,\n "Cet utilisateur ne peut PAS envoyer de messages dans ce salon."\n ],\n "Occupants": [\n null,\n "Participants :"\n ],\n "Invite": [\n null,\n "Inviter"\n ],\n "Features": [\n null,\n "Caractéristiques"\n ],\n "Hidden": [\n null,\n "Masqué"\n ],\n "Message archiving": [\n null,\n "Archivage du message"\n ],\n "Members only": [\n null,\n "Membres uniquement"\n ],\n "Moderated": [\n null,\n "Modéré"\n ],\n "Non-anonymous": [\n null,\n "Non-anonyme"\n ],\n "Open": [\n null,\n "Ouvrir"\n ],\n "Password protected": [\n null,\n "Protégé par mot de passe"\n ],\n "Persistent": [\n null,\n "Persistant"\n ],\n "Public": [\n null,\n "Public"\n ],\n "Semi-anonymous": [\n null,\n "Semi-anonyme"\n ],\n "Temporary": [\n null,\n "Temporaire"\n ],\n "Unmoderated": [\n null,\n "Non modéré"\n ],\n "Unsecured": [\n null,\n "Non sécurisé"\n ],\n "Messages are archived on the server": [\n null,\n "Les messages sont archivés sur le serveur"\n ],\n "This room is restricted to members only": [\n null,\n "Ce salon est restreint aux membres uniquement"\n ],\n "This room is being moderated": [\n null,\n "Ce salon est modéré"\n ],\n "Anyone can join this room": [\n null,\n "N’importe qui peut rejoindre ce salon"\n ],\n "This room requires a password before entry": [\n null,\n "Ce salon nécessite un mot de passe pour y accéder"\n ],\n "This room will disappear once the last person leaves": [\n null,\n "Ce salon disparaîtra au départ de la dernière personne"\n ],\n "This room is not being moderated": [\n null,\n "Ce salon n’est pas modéré"\n ],\n "This room does not require a password upon entry": [\n null,\n "Ce salon nécessite un mot de passe pour y accéder"\n ],\n "You are about to invite %1$s to the chat room \\"%2$s\\". ": [\n null,\n "Vous vous apprêtez à inviter %1$s dans le salon \\"%2$s\\". "\n ],\n "You may optionally include a message, explaining the reason for the invitation.": [\n null,\n "Vous pouvez facultativement ajouter un message, expliquant la raison de cette invitation."\n ],\n "Please enter a valid XMPP username": [\n null,\n ""\n ],\n "Room name": [\n null,\n "Nom du salon"\n ],\n "Server": [\n null,\n "Serveur"\n ],\n "Join Room": [\n null,\n "Rejoindre"\n ],\n "Show rooms": [\n null,\n "Afficher les salons"\n ],\n "Rooms": [\n null,\n "Salons"\n ],\n "No rooms on %1$s": [\n null,\n "Aucun salon dans %1$s"\n ],\n "Description:": [\n null,\n "Description :"\n ],\n "Room Address (JID):": [\n null,\n ""\n ],\n "Occupants:": [\n null,\n "Participants :"\n ],\n "Features:": [\n null,\n "Caractéristiques :"\n ],\n "Requires authentication": [\n null,\n "Nécessite une authentification"\n ],\n "Requires an invitation": [\n null,\n "Nécessite une invitation"\n ],\n "Open room": [\n null,\n "Ouvrir un salon"\n ],\n "Permanent room": [\n null,\n "Salon permanent"\n ],\n "Temporary room": [\n null,\n "Salon temporaire"\n ],\n "%1$s has invited you to join a chat room: %2$s": [\n null,\n "%1$s vous invite à rejoindre le salon : %2$s"\n ],\n "%1$s has invited you to join a chat room: %2$s, and left the following reason: \\"%3$s\\"": [\n null,\n "%1$s vous invite à rejoindre le salon : %2$s, avec le message suivant:\\"%3$s\\""\n ],\n "Notification from %1$s": [\n null,\n "Notification depuis %1$s"\n ],\n "%1$s says": [\n null,\n "%1$s dit"\n ],\n "has come online": [\n null,\n "s’est déconnecté"\n ],\n "wants to be your contact": [\n null,\n "veut être votre contact"\n ],\n "Re-establishing encrypted session": [\n null,\n "Rétablissement d’une session chiffrée"\n ],\n "Generating private key.": [\n null,\n "Génération de la clé privée."\n ],\n "Your browser might become unresponsive.": [\n null,\n "Votre navigateur pourrait ne plus répondre."\n ],\n "Authentication request from %1$s\\n\\nYour chat contact is attempting to verify your identity, by asking you the question below.\\n\\n%2$s": [\n null,\n "Demande d’authentification de %1$s\\n\\nVotre contact tente de vérifier votre identité, en vous posant la question ci-dessous.\\n\\n%2$s"\n ],\n "Could not verify this user\'s identify.": [\n null,\n "L’identité de cet utilisateur ne peut pas être vérifiée."\n ],\n "Exchanging private key with contact.": [\n null,\n "Échange de la clef privée avec le contact."\n ],\n "Your messages are not encrypted anymore": [\n null,\n "Vos messages ne sont plus chiffrés"\n ],\n "Your messages are now encrypted but your contact\'s identity has not been verified.": [\n null,\n "Vos messages sont maintenant chiffrés mais l’identité de votre contact n’a pas encore été vérifiée."\n ],\n "Your contact\'s identify has been verified.": [\n null,\n "L’identité de votre contact a été vérifiée."\n ],\n "Your contact has ended encryption on their end, you should do the same.": [\n null,\n "Votre contact a arrêté le chiffrement de son côté, vous devriez le faire aussi."\n ],\n "Your message could not be sent": [\n null,\n "Votre message ne peut pas être envoyé"\n ],\n "We received an unencrypted message": [\n null,\n "Un message non chiffré a été reçu"\n ],\n "We received an unreadable encrypted message": [\n null,\n "Un message chiffré illisible a été reçu"\n ],\n "Here are the fingerprints, please confirm them with %1$s, outside of this chat.\\n\\nFingerprint for you, %2$s: %3$s\\n\\nFingerprint for %1$s: %4$s\\n\\nIf you have confirmed that the fingerprints match, click OK, otherwise click Cancel.": [\n null,\n "Voici les empreintes de sécurité, veuillez les confirmer avec %1$s, en dehors de ce chat.\\n\\nEmpreinte pour vous, %2$s : %3$s\\n\\nEmpreinte pour %1$s : %4$s\\n\\nSi vous avez confirmé que les empreintes correspondent, cliquez OK, sinon cliquez Annuler."\n ],\n "You will be prompted to provide a security question and then an answer to that question.\\n\\nYour contact will then be prompted the same question and if they type the exact same answer (case sensitive), their identity will be verified.": [\n null,\n "Vous allez être invité à fournir une question de sécurité et une réponse à cette question.\\n\\nVotre contact devra répondre à la même question et s’il fournit la même réponse (sensible à la casse), son identité sera vérifiée."\n ],\n "What is your security question?": [\n null,\n "Quelle est votre question de sécurité ?"\n ],\n "What is the answer to the security question?": [\n null,\n "Quelle est la réponse à la question de sécurité ?"\n ],\n "Invalid authentication scheme provided": [\n null,\n "Schéma d’authentification fourni non valide"\n ],\n "Your messages are not encrypted. Click here to enable OTR encryption.": [\n null,\n "Vos messages ne sont pas chiffrés. Cliquez ici pour activer le chiffrement OTR."\n ],\n "Your messages are encrypted, but your contact has not been verified.": [\n null,\n "Vos messages sont chiffrés, mais votre contact n’a pas été vérifié."\n ],\n "Your messages are encrypted and your contact verified.": [\n null,\n "Vos messages sont chiffrés et votre contact est vérifié."\n ],\n "Your contact has closed their end of the private session, you should do the same": [\n null,\n "Votre contact a fermé la session privée de son côté, vous devriez le faire aussi"\n ],\n "End encrypted conversation": [\n null,\n "Terminer la conversation chiffrée"\n ],\n "Refresh encrypted conversation": [\n null,\n "Actualiser la conversation chiffrée"\n ],\n "Start encrypted conversation": [\n null,\n "Démarrer une conversation chiffrée"\n ],\n "Verify with fingerprints": [\n null,\n "Vérifier par empreintes de sécurité"\n ],\n "Verify with SMP": [\n null,\n "Vérifier par Question/Réponse"\n ],\n "What\'s this?": [\n null,\n "Qu’est-ce que c’est ?"\n ],\n "unencrypted": [\n null,\n "chiffré"\n ],\n "unverified": [\n null,\n "non vérifié"\n ],\n "verified": [\n null,\n "vérifié"\n ],\n "finished": [\n null,\n "terminé"\n ],\n " e.g. conversejs.org": [\n null,\n " e.g. conversejs.org"\n ],\n "Your XMPP provider\'s domain name:": [\n null,\n "Votre domaine XMPP :"\n ],\n "Fetch registration form": [\n null,\n "Récupération du formulaire d’enregistrement"\n ],\n "Tip: A list of public XMPP providers is available": [\n null,\n "Astuce : une liste publique de fournisseurs XMPP est disponible"\n ],\n "here": [\n null,\n "ici"\n ],\n "Register": [\n null,\n "S’enregistrer"\n ],\n "Sorry, the given provider does not support in band account registration. Please try with a different provider.": [\n null,\n "Désolé, le fournisseur indiqué ne supporte pas l’enregistrement de compte en ligne. Merci d’essayer avec un autre fournisseur."\n ],\n "Requesting a registration form from the XMPP server": [\n null,\n "Demande du formulaire enregistrement au serveur XMPP"\n ],\n "Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?": [\n null,\n "Quelque chose a échoué lors de l’établissement de la connexion avec \\"%1$s\\". Existe-t-il vraiment ?"\n ],\n "Now logging you in": [\n null,\n "En cours de connexion"\n ],\n "Registered successfully": [\n null,\n "Enregistré avec succès"\n ],\n "The provider rejected your registration attempt. Please check the values you entered for correctness.": [\n null,\n "Le fournisseur a rejeté votre demande d’enregistrement."\n ],\n "Retry": [\n null,\n ""\n ],\n "This contact is busy": [\n null,\n "Ce contact est occupé"\n ],\n "This contact is online": [\n null,\n "Ce contact est connecté"\n ],\n "This contact is offline": [\n null,\n "Ce contact est déconnecté"\n ],\n "This contact is unavailable": [\n null,\n "Ce contact est indisponible"\n ],\n "This contact is away for an extended period": [\n null,\n "Ce contact est absent"\n ],\n "This contact is away": [\n null,\n "Ce contact est absent"\n ],\n "Groups": [\n null,\n "Groupes"\n ],\n "My contacts": [\n null,\n "Mes contacts"\n ],\n "Pending contacts": [\n null,\n "Contacts en attente"\n ],\n "Contact requests": [\n null,\n "Demandes de contacts"\n ],\n "Ungrouped": [\n null,\n "Sans groupe"\n ],\n "Filter": [\n null,\n "Filtrer"\n ],\n "State": [\n null,\n "Status"\n ],\n "Any": [\n null,\n "Aucun"\n ],\n "Unread": [\n null,\n ""\n ],\n "Chatty": [\n null,\n ""\n ],\n "Extended Away": [\n null,\n ""\n ],\n "Click to chat with this contact": [\n null,\n "Cliquez pour discuter avec ce contact"\n ],\n "Name": [\n null,\n "Nom"\n ],\n "Are you sure you want to remove this contact?": [\n null,\n "Voulez-vous vraiment supprimer ce contact ?"\n ],\n "Are you sure you want to decline this contact request?": [\n null,\n "Voulez-vous vraiment refuser cette demande de contact ?"\n ]\n }\n }\n}';}); +define('text!fr',[],function () { return '{\n "domain": "converse",\n "locale_data": {\n "converse": {\n "": {\n "domain": "converse",\n "plural_forms": "nplurals=2; plural=n > 1;",\n "lang": "fr"\n },\n "Bookmark this room": [\n null,\n "Marquer ce salon"\n ],\n "The name for this bookmark:": [\n null,\n "Nom de ce marque-page :"\n ],\n "Would you like this room to be automatically joined upon startup?": [\n null,\n "Voulez-vous rejoindre automatiquement ce salon au lancement ?"\n ],\n "What should your nickname for this room be?": [\n null,\n "Quel alias devrait être utilisé pour ce salon ?"\n ],\n "Save": [\n null,\n "Enregistrer"\n ],\n "Cancel": [\n null,\n "Annuler"\n ],\n "Are you sure you want to remove the bookmark \\"%1$s\\"?": [\n null,\n "Voulez-vous vraiment retirer le marque-page « %1$s » ?"\n ],\n "Sorry, something went wrong while trying to save your bookmark.": [\n null,\n "Désolé, quelque chose s’est mal passé pendant la sauvegarde de ce marque-page."\n ],\n "Click to toggle the bookmarks list": [\n null,\n "Cliquer pour ouvrir la liste des salons"\n ],\n "Bookmarks": [\n null,\n "Marques-page"\n ],\n "Leave this room": [\n null,\n "Quitter ce salon"\n ],\n "Remove this bookmark": [\n null,\n "Retirer ce marque-page"\n ],\n "Unbookmark this room": [\n null,\n "Retirer ce salon"\n ],\n "Show more information on this room": [\n null,\n "Afficher davantage d’informations sur ce salon"\n ],\n "Click to open this room": [\n null,\n "Cliquer pour ouvrir ce salon"\n ],\n "You have unread messages": [\n null,\n "Vous avez de nouveaux messages"\n ],\n "Close this chat box": [\n null,\n "Fermer cette fenêtre de discussion"\n ],\n "Personal message": [\n null,\n "Message personnel"\n ],\n "Send": [\n null,\n "Envoyer"\n ],\n "me": [\n null,\n "moi"\n ],\n "A very large message has been received.This might be due to an attack meant to degrade the chat performance.Output has been shortened.": [\n null,\n "Un message très long a été reçu. Cela pourrait être lié à une attaque visant à dégrader la performance de la conversation. La sortie a été tronquée."\n ],\n "Typing from another device": [\n null,\n "Saisie depuis un autre appareil"\n ],\n "is typing": [\n null,\n "écrit"\n ],\n "Stopped typing on the other device": [\n null,\n "Fin de saisie depuis l’autre appareil"\n ],\n "has stopped typing": [\n null,\n "a arrêté d’écrire"\n ],\n "has gone away": [\n null,\n "est parti"\n ],\n "Show this menu": [\n null,\n "Afficher ce menu"\n ],\n "Write in the third person": [\n null,\n "Écrire à la troisième personne"\n ],\n "Remove messages": [\n null,\n "Effacer les messages"\n ],\n "Are you sure you want to clear the messages from this chat box?": [\n null,\n "Voulez-vous vraiment supprimer les messages de cette conversation ?"\n ],\n "has gone offline": [\n null,\n "s’est déconnecté"\n ],\n "is busy": [\n null,\n "est occupé"\n ],\n "Clear all messages": [\n null,\n "Supprimer tous les messages"\n ],\n "Insert a smiley": [\n null,\n "Insérer une émoticône"\n ],\n "Start a call": [\n null,\n "Démarrer un appel"\n ],\n "Contacts": [\n null,\n "Contacts"\n ],\n "XMPP Username:": [\n null,\n "Nom d’utilisateur XMPP :"\n ],\n "Password:": [\n null,\n "Mot de passe :"\n ],\n "Click here to log in anonymously": [\n null,\n "Cliquez ici pour se connecter anonymement"\n ],\n "Log In": [\n null,\n "Se connecter"\n ],\n "Username": [\n null,\n "Nom"\n ],\n "user@server": [\n null,\n "utilisateur@serveur"\n ],\n "password": [\n null,\n "Mot de passe"\n ],\n "Sign in": [\n null,\n "S’inscrire"\n ],\n "I am %1$s": [\n null,\n "Je suis %1$s"\n ],\n "Click here to write a custom status message": [\n null,\n "Cliquez ici pour indiquer votre statut personnel"\n ],\n "Click to change your chat status": [\n null,\n "Cliquez pour changer votre statut"\n ],\n "Custom status": [\n null,\n "Statut personnel"\n ],\n "online": [\n null,\n "en ligne"\n ],\n "busy": [\n null,\n "occupé"\n ],\n "away for long": [\n null,\n "absent pour une longue durée"\n ],\n "away": [\n null,\n "absent"\n ],\n "offline": [\n null,\n "Déconnecté"\n ],\n "Online": [\n null,\n "En ligne"\n ],\n "Busy": [\n null,\n "Occupé"\n ],\n "Away": [\n null,\n "Absent"\n ],\n "Offline": [\n null,\n "Déconnecté"\n ],\n "Log out": [\n null,\n "Se déconnecter"\n ],\n "Click to add new chat contacts": [\n null,\n "Cliquez pour ajouter de nouveaux contacts"\n ],\n "Add a contact": [\n null,\n "Ajouter un contact"\n ],\n "Contact name": [\n null,\n "Nom du contact"\n ],\n "Search": [\n null,\n "Rechercher"\n ],\n "e.g. user@example.org": [\n null,\n "e.g. utilisateur@exemple.org"\n ],\n "Add": [\n null,\n "Ajouter"\n ],\n "No users found": [\n null,\n "Aucun utilisateur trouvé"\n ],\n "This client does not allow presence subscriptions": [\n null,\n "Ce client ne permet pas les mises à jour de disponibilité"\n ],\n "Click to hide these contacts": [\n null,\n "Cliquez pour cacher ces contacts"\n ],\n "Close this box": [\n null,\n "Fermer cette fenêtre"\n ],\n "Minimize this chat box": [\n null,\n "Réduire cette fenêtre de discussion"\n ],\n "Click to restore this chat": [\n null,\n "Cliquez pour afficher cette discussion"\n ],\n "Minimized": [\n null,\n "Réduit(s)"\n ],\n "This room is not anonymous": [\n null,\n "Ce salon n’est pas anonyme"\n ],\n "This room now shows unavailable members": [\n null,\n "Ce salon affiche maintenant les membres indisponibles"\n ],\n "This room does not show unavailable members": [\n null,\n "Ce salon n’affiche pas les membres indisponibles"\n ],\n "The room configuration has changed": [\n null,\n "Les paramètres de ce salon ont été modifiés"\n ],\n "Room logging is now enabled": [\n null,\n "Le logging du salon est activé"\n ],\n "Room logging is now disabled": [\n null,\n "Le logging du salon est désactivé"\n ],\n "This room is now no longer anonymous": [\n null,\n "Ce salon n’est plus anonyme"\n ],\n "This room is now semi-anonymous": [\n null,\n "Ce salon est maintenant semi-anonyme"\n ],\n "This room is now fully-anonymous": [\n null,\n "Ce salon est maintenant entièrement anonyme"\n ],\n "A new room has been created": [\n null,\n "Un nouveau salon a été créé"\n ],\n "You have been banned from this room": [\n null,\n "Vous avez été banni de ce salon"\n ],\n "You have been kicked from this room": [\n null,\n "Vous avez été expulsé de ce salon"\n ],\n "You have been removed from this room because of an affiliation change": [\n null,\n "Vous avez été retiré de ce salon du fait d’un changement d’affiliation"\n ],\n "You have been removed from this room because the room has changed to members-only and you\'re not a member": [\n null,\n "Vous avez été retiré de ce salon parce que ce salon est devenu réservé aux membres et vous n’êtes pas membre"\n ],\n "You have been removed from this room because the MUC (Multi-user chat) service is being shut down.": [\n null,\n "Vous avez été retiré de ce salon parce que le service de chat multi-utilisateur a été désactivé."\n ],\n "%1$s has been banned": [\n null,\n "%1$s a été banni"\n ],\n "%1$s\'s nickname has changed": [\n null,\n "L’alias de %1$s a changé"\n ],\n "%1$s has been kicked out": [\n null,\n "%1$s a été expulsé"\n ],\n "%1$s has been removed because of an affiliation change": [\n null,\n "%1$s a été supprimé à cause d’un changement d’affiliation"\n ],\n "%1$s has been removed for not being a member": [\n null,\n "%1$s a été supprimé car il n’est pas membre"\n ],\n "Your nickname has been automatically set to: %1$s": [\n null,\n "Votre alias a été automatiquement déterminé en : %1$s"\n ],\n "Your nickname has been changed to: %1$s": [\n null,\n "Votre alias a été modifié en : %1$s"\n ],\n "Message": [\n null,\n "Message"\n ],\n "Close and leave this room": [\n null,\n "Fermer et quitter ce salon"\n ],\n "Configure this room": [\n null,\n "Configurer ce salon"\n ],\n "Hide the list of occupants": [\n null,\n "Cacher la liste des participants"\n ],\n "${command}": [\n null,\n "${command}"\n ],\n "Are you sure you want to clear the messages from this room?": [\n null,\n "Voulez-vous vraiment supprimer les messages de ce salon ?"\n ],\n "Error: could not execute the command": [\n null,\n "Erreur : la commande ne peut pas être exécutée"\n ],\n "Change user\'s affiliation to admin": [\n null,\n "Changer le rôle de l’utilisateur en administrateur"\n ],\n "Ban user from room": [\n null,\n "Bannir l’utilisateur du salon"\n ],\n "Change user role to occupant": [\n null,\n "Changer le rôle de l’utilisateur en participant"\n ],\n "Kick user from room": [\n null,\n "Expulser l’utilisateur du salon"\n ],\n "Write in 3rd person": [\n null,\n "Écrire à la troisième personne"\n ],\n "Grant membership to a user": [\n null,\n "Autoriser l’utilisateur à être membre"\n ],\n "Remove user\'s ability to post messages": [\n null,\n "Retirer le droit d’envoyer des messages"\n ],\n "Change your nickname": [\n null,\n "Changer votre alias"\n ],\n "Grant moderator role to user": [\n null,\n "Changer le rôle de l’utilisateur en modérateur"\n ],\n "Grant ownership of this room": [\n null,\n "Accorder la propriété à ce salon"\n ],\n "Revoke user\'s membership": [\n null,\n "Révoquer l’utilisateur des membres"\n ],\n "Set room subject": [\n null,\n "Indiquer le sujet du salon"\n ],\n "Set room subject (alias for /subject)": [\n null,\n "Définir le sujet de la salle (alias pour /subject)"\n ],\n "Allow muted user to post messages": [\n null,\n "Autoriser les utilisateurs muets à poster des messages"\n ],\n "The nickname you chose is reserved or currently in use, please choose a different one.": [\n null,\n "L’alias choisi est réservé ou actuellment utilisé, veuillez en choisir un différent."\n ],\n "Please choose your nickname": [\n null,\n "Veuillez choisir votre alias"\n ],\n "Nickname": [\n null,\n "Alias"\n ],\n "Enter room": [\n null,\n "Entrer dans le salon"\n ],\n "This chatroom requires a password": [\n null,\n "Ce salon nécessite un mot de passe"\n ],\n "Password: ": [\n null,\n "Mot de passe : "\n ],\n "Submit": [\n null,\n "Soumettre"\n ],\n "This action was done by %1$s.": [\n null,\n "L’action a été réalisée par %1$s."\n ],\n "The reason given is: \\"%1$s\\".": [\n null,\n "La raison indiquée est : « %1$s »."\n ],\n "${notification.reason}": [\n null,\n ""\n ],\n " has left the room. \\"": [\n null,\n " a quitté le salon. \\""\n ],\n " has left the room": [\n null,\n " a quitté le salon"\n ],\n " has joined the room. \\"": [\n null,\n " a rejoint le salon. \\""\n ],\n " has joined the room.": [\n null,\n " a rejoint le salon."\n ],\n "You are not on the member list of this room.": [\n null,\n "Vous n’êtes pas dans la liste des membres de ce salon."\n ],\n "You have been banned from this room.": [\n null,\n "Vous avez été banni de ce salon."\n ],\n "No nickname was specified.": [\n null,\n "Aucun alias n’a été indiqué."\n ],\n "You are not allowed to create new rooms.": [\n null,\n "Vous n’êtes pas autorisé à créer des salons."\n ],\n "Your nickname doesn\'t conform to this room\'s policies.": [\n null,\n "Votre alias n’est pas conforme à la politique de ce salon."\n ],\n "This room does not (yet) exist.": [\n null,\n "Ce salon n’existe pas (pour l’instant)."\n ],\n "This room has reached its maximum number of occupants.": [\n null,\n "Ce salon a atteint sa limite maximale d’occupants."\n ],\n "Topic set by %1$s to: %2$s": [\n null,\n "Le sujet « %2$s » a été défini par %1$s"\n ],\n "This user is a moderator.": [\n null,\n "Cet utilisateur est un modérateur."\n ],\n "This user can send messages in this room.": [\n null,\n "Cet utilisateur peut envoyer des messages dans ce salon."\n ],\n "This user can NOT send messages in this room.": [\n null,\n "Cet utilisateur ne peut PAS envoyer de messages dans ce salon."\n ],\n "Occupants": [\n null,\n "Participants :"\n ],\n "Invite": [\n null,\n "Inviter"\n ],\n "Features": [\n null,\n "Caractéristiques"\n ],\n "Hidden": [\n null,\n "Masqué"\n ],\n "Message archiving": [\n null,\n "Archivage du message"\n ],\n "Members only": [\n null,\n "Membres uniquement"\n ],\n "Moderated": [\n null,\n "Modéré"\n ],\n "Non-anonymous": [\n null,\n "Non-anonyme"\n ],\n "Open": [\n null,\n "Ouvrir"\n ],\n "Password protected": [\n null,\n "Protégé par mot de passe"\n ],\n "Persistent": [\n null,\n "Persistant"\n ],\n "Public": [\n null,\n "Public"\n ],\n "Semi-anonymous": [\n null,\n "Semi-anonyme"\n ],\n "Temporary": [\n null,\n "Temporaire"\n ],\n "Unmoderated": [\n null,\n "Non modéré"\n ],\n "Unsecured": [\n null,\n "Non sécurisé"\n ],\n "This room is not publicly searchable": [\n null,\n "Ce salon ne peut pas être recherché publiquement"\n ],\n "Messages are archived on the server": [\n null,\n "Les messages sont archivés sur le serveur"\n ],\n "This room is restricted to members only": [\n null,\n "Ce salon est restreint aux membres uniquement"\n ],\n "This room is being moderated": [\n null,\n "Ce salon est modéré"\n ],\n "All other room occupants can see your XMPP username": [\n null,\n "Tous les autres occupants de ce salon peuvent voir votre nom d’utilisateur XMPP"\n ],\n "Anyone can join this room": [\n null,\n "N’importe qui peut rejoindre ce salon"\n ],\n "This room requires a password before entry": [\n null,\n "Ce salon nécessite un mot de passe pour y accéder"\n ],\n "This room persists even if it\'s unoccupied": [\n null,\n "Ce salon persiste même s\'il est inoccupé"\n ],\n "This room is publicly searchable": [\n null,\n "Ce salon peut être recherché publiquement"\n ],\n "Only moderators can see your XMPP username": [\n null,\n "Seuls les modérateurs peuvent voir votre identifiant XMPP"\n ],\n "This room will disappear once the last person leaves": [\n null,\n "Ce salon disparaîtra au départ de la dernière personne"\n ],\n "This room is not being moderated": [\n null,\n "Ce salon n’est pas modéré"\n ],\n "This room does not require a password upon entry": [\n null,\n "Ce salon nécessite un mot de passe pour y accéder"\n ],\n "You are about to invite %1$s to the chat room \\"%2$s\\". ": [\n null,\n "Vous vous apprêtez à inviter %1$s dans le salon \\"%2$s\\". "\n ],\n "You may optionally include a message, explaining the reason for the invitation.": [\n null,\n "Vous pouvez facultativement ajouter un message, expliquant la raison de cette invitation."\n ],\n "Please enter a valid XMPP username": [\n null,\n "Veuillez saisir un identifiant utilisateur XMPP valide"\n ],\n "Room name": [\n null,\n "Nom du salon"\n ],\n "Server": [\n null,\n "Serveur"\n ],\n "Join Room": [\n null,\n "Rejoindre"\n ],\n "Show rooms": [\n null,\n "Afficher les salons"\n ],\n "Rooms": [\n null,\n "Salons"\n ],\n "No rooms on %1$s": [\n null,\n "Aucun salon dans %1$s"\n ],\n "Description:": [\n null,\n "Description :"\n ],\n "Room Address (JID):": [\n null,\n "Adresse du salon (JID) :"\n ],\n "Occupants:": [\n null,\n "Participants :"\n ],\n "Features:": [\n null,\n "Caractéristiques :"\n ],\n "Requires authentication": [\n null,\n "Nécessite une authentification"\n ],\n "Requires an invitation": [\n null,\n "Nécessite une invitation"\n ],\n "Open room": [\n null,\n "Ouvrir un salon"\n ],\n "Permanent room": [\n null,\n "Salon permanent"\n ],\n "Temporary room": [\n null,\n "Salon temporaire"\n ],\n "%1$s has invited you to join a chat room: %2$s": [\n null,\n "%1$s vous invite à rejoindre le salon : %2$s"\n ],\n "%1$s has invited you to join a chat room: %2$s, and left the following reason: \\"%3$s\\"": [\n null,\n "%1$s vous invite à rejoindre le salon : %2$s, avec le message suivant:\\"%3$s\\""\n ],\n "Notification from %1$s": [\n null,\n "Notification depuis %1$s"\n ],\n "%1$s says": [\n null,\n "%1$s dit"\n ],\n "has come online": [\n null,\n "s’est déconnecté"\n ],\n "wants to be your contact": [\n null,\n "veut être votre contact"\n ],\n "Re-establishing encrypted session": [\n null,\n "Rétablissement d’une session chiffrée"\n ],\n "Generating private key.": [\n null,\n "Génération de la clé privée."\n ],\n "Your browser might become unresponsive.": [\n null,\n "Votre navigateur pourrait ne plus répondre."\n ],\n "Authentication request from %1$s\\n\\nYour chat contact is attempting to verify your identity, by asking you the question below.\\n\\n%2$s": [\n null,\n "Demande d’authentification de %1$s\\n\\nVotre contact tente de vérifier votre identité, en vous posant la question ci-dessous.\\n\\n%2$s"\n ],\n "Could not verify this user\'s identify.": [\n null,\n "L’identité de cet utilisateur ne peut pas être vérifiée."\n ],\n "Exchanging private key with contact.": [\n null,\n "Échange de la clef privée avec le contact."\n ],\n "Your messages are not encrypted anymore": [\n null,\n "Vos messages ne sont plus chiffrés"\n ],\n "Your messages are now encrypted but your contact\'s identity has not been verified.": [\n null,\n "Vos messages sont maintenant chiffrés mais l’identité de votre contact n’a pas encore été vérifiée."\n ],\n "Your contact\'s identify has been verified.": [\n null,\n "L’identité de votre contact a été vérifiée."\n ],\n "Your contact has ended encryption on their end, you should do the same.": [\n null,\n "Votre contact a arrêté le chiffrement de son côté, vous devriez le faire aussi."\n ],\n "Your message could not be sent": [\n null,\n "Votre message ne peut pas être envoyé"\n ],\n "We received an unencrypted message": [\n null,\n "Un message non chiffré a été reçu"\n ],\n "We received an unreadable encrypted message": [\n null,\n "Un message chiffré illisible a été reçu"\n ],\n "Here are the fingerprints, please confirm them with %1$s, outside of this chat.\\n\\nFingerprint for you, %2$s: %3$s\\n\\nFingerprint for %1$s: %4$s\\n\\nIf you have confirmed that the fingerprints match, click OK, otherwise click Cancel.": [\n null,\n "Voici les empreintes de sécurité, veuillez les confirmer avec %1$s, en dehors de ce chat.\\n\\nEmpreinte pour vous, %2$s : %3$s\\n\\nEmpreinte pour %1$s : %4$s\\n\\nSi vous avez confirmé que les empreintes correspondent, cliquez OK, sinon cliquez Annuler."\n ],\n "You will be prompted to provide a security question and then an answer to that question.\\n\\nYour contact will then be prompted the same question and if they type the exact same answer (case sensitive), their identity will be verified.": [\n null,\n "Vous allez être invité à fournir une question de sécurité et une réponse à cette question.\\n\\nVotre contact devra répondre à la même question et s’il fournit la même réponse (sensible à la casse), son identité sera vérifiée."\n ],\n "What is your security question?": [\n null,\n "Quelle est votre question de sécurité ?"\n ],\n "What is the answer to the security question?": [\n null,\n "Quelle est la réponse à la question de sécurité ?"\n ],\n "Invalid authentication scheme provided": [\n null,\n "Schéma d’authentification fourni non valide"\n ],\n "Your messages are not encrypted. Click here to enable OTR encryption.": [\n null,\n "Vos messages ne sont pas chiffrés. Cliquez ici pour activer le chiffrement OTR."\n ],\n "Your messages are encrypted, but your contact has not been verified.": [\n null,\n "Vos messages sont chiffrés, mais votre contact n’a pas été vérifié."\n ],\n "Your messages are encrypted and your contact verified.": [\n null,\n "Vos messages sont chiffrés et votre contact est vérifié."\n ],\n "Your contact has closed their end of the private session, you should do the same": [\n null,\n "Votre contact a fermé la session privée de son côté, vous devriez le faire aussi"\n ],\n "End encrypted conversation": [\n null,\n "Terminer la conversation chiffrée"\n ],\n "Refresh encrypted conversation": [\n null,\n "Actualiser la conversation chiffrée"\n ],\n "Start encrypted conversation": [\n null,\n "Démarrer une conversation chiffrée"\n ],\n "Verify with fingerprints": [\n null,\n "Vérifier par empreintes de sécurité"\n ],\n "Verify with SMP": [\n null,\n "Vérifier par Question/Réponse"\n ],\n "What\'s this?": [\n null,\n "Qu’est-ce que c’est ?"\n ],\n "unencrypted": [\n null,\n "chiffré"\n ],\n "unverified": [\n null,\n "non vérifié"\n ],\n "verified": [\n null,\n "vérifié"\n ],\n "finished": [\n null,\n "terminé"\n ],\n " e.g. conversejs.org": [\n null,\n " e.g. conversejs.org"\n ],\n "Your XMPP provider\'s domain name:": [\n null,\n "Votre domaine XMPP :"\n ],\n "Fetch registration form": [\n null,\n "Récupération du formulaire d’enregistrement"\n ],\n "Tip: A list of public XMPP providers is available": [\n null,\n "Astuce : une liste publique de fournisseurs XMPP est disponible"\n ],\n "here": [\n null,\n "ici"\n ],\n "Register": [\n null,\n "S’enregistrer"\n ],\n "Sorry, the given provider does not support in band account registration. Please try with a different provider.": [\n null,\n "Désolé, le fournisseur indiqué ne supporte pas l’enregistrement de compte en ligne. Merci d’essayer avec un autre fournisseur."\n ],\n "Requesting a registration form from the XMPP server": [\n null,\n "Demande du formulaire enregistrement au serveur XMPP"\n ],\n "Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?": [\n null,\n "Quelque chose a échoué lors de l’établissement de la connexion avec \\"%1$s\\". Existe-t-il vraiment ?"\n ],\n "Now logging you in": [\n null,\n "En cours de connexion"\n ],\n "Registered successfully": [\n null,\n "Enregistré avec succès"\n ],\n "The provider rejected your registration attempt. Please check the values you entered for correctness.": [\n null,\n "Le fournisseur a rejeté votre demande d’enregistrement."\n ],\n "Retry": [\n null,\n "Réessayer"\n ],\n "Click to toggle the rooms list": [\n null,\n "Cliquer pour ouvrir la liste des salons"\n ],\n "Open Rooms": [\n null,\n "Ouvrir les salons"\n ],\n "Are you sure you want to leave the room \\"%1$s\\"?": [\n null,\n "Voulez-vous vraiment supprimer le marque-page « %1$s » ?"\n ],\n "This contact is busy": [\n null,\n "Ce contact est occupé"\n ],\n "This contact is online": [\n null,\n "Ce contact est connecté"\n ],\n "This contact is offline": [\n null,\n "Ce contact est déconnecté"\n ],\n "This contact is unavailable": [\n null,\n "Ce contact est indisponible"\n ],\n "This contact is away for an extended period": [\n null,\n "Ce contact est absent"\n ],\n "This contact is away": [\n null,\n "Ce contact est absent"\n ],\n "Groups": [\n null,\n "Groupes"\n ],\n "My contacts": [\n null,\n "Mes contacts"\n ],\n "Pending contacts": [\n null,\n "Contacts en attente"\n ],\n "Contact requests": [\n null,\n "Demandes de contacts"\n ],\n "Ungrouped": [\n null,\n "Sans groupe"\n ],\n "Filter": [\n null,\n "Filtrer"\n ],\n "State": [\n null,\n "Status"\n ],\n "Any": [\n null,\n "Aucun"\n ],\n "Unread": [\n null,\n "Non lu"\n ],\n "Chatty": [\n null,\n "Bavard"\n ],\n "Extended Away": [\n null,\n "Absence longue durée"\n ],\n "Click to remove %1$s as a contact": [\n null,\n "Cliquez pour retirer le contact « %1$s »"\n ],\n "Click to accept the contact request from %1$s": [\n null,\n "Cliquez pour accepter la demande de « %1$s »"\n ],\n "Click to decline the contact request from %1$s": [\n null,\n "Cliquez pour décliner la demande de contact de « %1$s »"\n ],\n "Click to chat with this contact": [\n null,\n "Cliquez pour discuter avec ce contact"\n ],\n "Name": [\n null,\n "Nom"\n ],\n "Are you sure you want to remove this contact?": [\n null,\n "Voulez-vous vraiment retirer ce contact ?"\n ],\n "Are you sure you want to decline this contact request?": [\n null,\n "Voulez-vous vraiment décliner cette demande de contact ?"\n ]\n }\n }\n}';}); define('text!he',[],function () { return '{\n "domain": "converse",\n "locale_data": {\n "converse": {\n "": {\n "domain": "converse",\n "plural_forms": "nplurals=2; plural=(n != 1);",\n "lang": "he"\n },\n "Bookmark this room": [\n null,\n ""\n ],\n "The name for this bookmark:": [\n null,\n ""\n ],\n "Would you like this room to be automatically joined upon startup?": [\n null,\n ""\n ],\n "What should your nickname for this room be?": [\n null,\n ""\n ],\n "Save": [\n null,\n "שמור"\n ],\n "Cancel": [\n null,\n "ביטול"\n ],\n "Bookmarks": [\n null,\n ""\n ],\n "Remove this bookmark": [\n null,\n ""\n ],\n "Show more information on this room": [\n null,\n "הצג עוד מידע אודות חדר זה"\n ],\n "Click to open this room": [\n null,\n "לחץ כדי לפתוח את חדר זה"\n ],\n "Personal message": [\n null,\n "הודעה אישית"\n ],\n "Send": [\n null,\n ""\n ],\n "me": [\n null,\n "אני"\n ],\n "A very large message has been received.This might be due to an attack meant to degrade the chat performance.Output has been shortened.": [\n null,\n ""\n ],\n "Typing from another device": [\n null,\n ""\n ],\n "is typing": [\n null,\n "מקליד(ה) כעת"\n ],\n "Stopped typing on the other device": [\n null,\n ""\n ],\n "has stopped typing": [\n null,\n "חדל(ה) להקליד"\n ],\n "has gone away": [\n null,\n "נעדר(ת)"\n ],\n "Show this menu": [\n null,\n "הצג את תפריט זה"\n ],\n "Write in the third person": [\n null,\n "כתוב בגוף השלישי"\n ],\n "Remove messages": [\n null,\n "הסר הודעות"\n ],\n "Are you sure you want to clear the messages from this chat box?": [\n null,\n "האם אתה בטוח כי ברצונך לטהר את ההודעות מתוך תיבת שיחה זה?"\n ],\n "has gone offline": [\n null,\n "כבר לא מקוון"\n ],\n "is busy": [\n null,\n "עסוק(ה) כעת"\n ],\n "Clear all messages": [\n null,\n "טהר את כל ההודעות"\n ],\n "Insert a smiley": [\n null,\n "הכנס סמיילי"\n ],\n "Start a call": [\n null,\n "התחל שיחה"\n ],\n "Contacts": [\n null,\n "אנשי קשר"\n ],\n "XMPP Username:": [\n null,\n "שם משתמש XMPP:"\n ],\n "Password:": [\n null,\n "סיסמה:"\n ],\n "Click here to log in anonymously": [\n null,\n "לחץ כאן כדי להתחבר באופן אנונימי"\n ],\n "Log In": [\n null,\n "כניסה"\n ],\n "user@server": [\n null,\n ""\n ],\n "password": [\n null,\n "סיסמה"\n ],\n "Sign in": [\n null,\n "התחברות"\n ],\n "I am %1$s": [\n null,\n "מצבי כעת הינו %1$s"\n ],\n "Click here to write a custom status message": [\n null,\n "לחץ כאן כדי לכתוב הודעת מצב מותאמת"\n ],\n "Click to change your chat status": [\n null,\n "לחץ כדי לשנות את הודעת השיחה שלך"\n ],\n "Custom status": [\n null,\n "מצב מותאם"\n ],\n "online": [\n null,\n "מקוון"\n ],\n "busy": [\n null,\n "עסוק"\n ],\n "away for long": [\n null,\n "נעדר לזמן מה"\n ],\n "away": [\n null,\n "נעדר"\n ],\n "offline": [\n null,\n "לא מקוון"\n ],\n "Online": [\n null,\n "מקוון"\n ],\n "Busy": [\n null,\n "עסוק"\n ],\n "Away": [\n null,\n "נעדר"\n ],\n "Offline": [\n null,\n "לא מקוון"\n ],\n "Log out": [\n null,\n "התנתקות"\n ],\n "Click to add new chat contacts": [\n null,\n "לחץ כדי להוסיף אנשי קשר שיחה חדשים"\n ],\n "Add a contact": [\n null,\n "הוסף איש קשר"\n ],\n "Contact name": [\n null,\n "שם איש קשר"\n ],\n "Search": [\n null,\n "חיפוש"\n ],\n "Add": [\n null,\n "הוסף"\n ],\n "No users found": [\n null,\n "לא נמצאו משתמשים"\n ],\n "This client does not allow presence subscriptions": [\n null,\n "לקוח זה לא מתיר הרשמות נוכחות"\n ],\n "Click to hide these contacts": [\n null,\n "לחץ כדי להסתיר את אנשי קשר אלה"\n ],\n "Minimize this chat box": [\n null,\n ""\n ],\n "Click to restore this chat": [\n null,\n "לחץ כדי לשחזר את שיחה זו"\n ],\n "Minimized": [\n null,\n "ממוזער"\n ],\n "This room is not anonymous": [\n null,\n "חדר זה אינו אנונימי"\n ],\n "This room now shows unavailable members": [\n null,\n "חדר זה כעת מציג חברים לא זמינים"\n ],\n "This room does not show unavailable members": [\n null,\n "חדר זה לא מציג חברים לא זמינים"\n ],\n "Room logging is now enabled": [\n null,\n "יומן חדר הינו מופעל כעת"\n ],\n "Room logging is now disabled": [\n null,\n "יומן חדר הינו מנוטרל כעת"\n ],\n "This room is now semi-anonymous": [\n null,\n "חדר זה הינו אנונימי-למחצה כעת"\n ],\n "This room is now fully-anonymous": [\n null,\n "חדר זה הינו אנונימי-לחלוטין כעת"\n ],\n "A new room has been created": [\n null,\n "חדר חדש נוצר"\n ],\n "You have been banned from this room": [\n null,\n "נאסרת מתוך חדר זה"\n ],\n "You have been kicked from this room": [\n null,\n "נבעטת מתוך חדר זה"\n ],\n "You have been removed from this room because of an affiliation change": [\n null,\n "הוסרת מתוך חדר זה משום שינוי שיוך"\n ],\n "You have been removed from this room because the room has changed to members-only and you\'re not a member": [\n null,\n "הוסרת מתוך חדר זה משום שהחדר שונה לחברים-בלבד ואינך במעמד של חבר"\n ],\n "You have been removed from this room because the MUC (Multi-user chat) service is being shut down.": [\n null,\n "הוסרת מתוך חדר זה משום ששירות שמ״מ (שיחה מרובת משתמשים) זה כעת מצוי בהליכי סגירה."\n ],\n "Message": [\n null,\n "הודעה"\n ],\n "${command}": [\n null,\n ""\n ],\n "Are you sure you want to clear the messages from this room?": [\n null,\n "האם אתה בטוח כי ברצונך לטהר את ההודעות מתוך חדר זה?"\n ],\n "Error: could not execute the command": [\n null,\n "שגיאה: לא היתה אפשרות לבצע פקודה"\n ],\n "Change user\'s affiliation to admin": [\n null,\n "שנה סינוף משתמש למנהל"\n ],\n "Ban user from room": [\n null,\n "אסור משתמש מתוך חדר"\n ],\n "Kick user from room": [\n null,\n "בעט משתמש מתוך חדר"\n ],\n "Write in 3rd person": [\n null,\n "כתוב בגוף שלישי"\n ],\n "Grant membership to a user": [\n null,\n "הענק חברות למשתמש"\n ],\n "Remove user\'s ability to post messages": [\n null,\n "הסר יכולת משתמש לפרסם הודעות"\n ],\n "Change your nickname": [\n null,\n "שנה את השם כינוי שלך"\n ],\n "Grant moderator role to user": [\n null,\n "הענק תפקיד אחראי למשתמש"\n ],\n "Grant ownership of this room": [\n null,\n "הענק בעלות על חדר זה"\n ],\n "Revoke user\'s membership": [\n null,\n "שלול חברות משתמש"\n ],\n "Set room subject (alias for /subject)": [\n null,\n ""\n ],\n "Allow muted user to post messages": [\n null,\n "התר למשתמש מושתק לפרסם הודעות"\n ],\n "The nickname you chose is reserved or currently in use, please choose a different one.": [\n null,\n ""\n ],\n "Nickname": [\n null,\n "שם כינוי"\n ],\n "This chatroom requires a password": [\n null,\n "חדר שיחה זה מצריך סיסמה"\n ],\n "Password: ": [\n null,\n "סיסמה: "\n ],\n "Submit": [\n null,\n "שלח"\n ],\n "${notification.reason}": [\n null,\n ""\n ],\n " has left the room. \\"": [\n null,\n ""\n ],\n " has joined the room. \\"": [\n null,\n ""\n ],\n " has joined the room.": [\n null,\n ""\n ],\n "Topic set by %1$s to: %2$s": [\n null,\n "נושא חדר זה נקבע על ידי %1$s אל: %2$s"\n ],\n "Occupants": [\n null,\n "נוכחים"\n ],\n "Invite": [\n null,\n "הזמנה"\n ],\n "Hidden": [\n null,\n "נסתר"\n ],\n "Message archiving": [\n null,\n ""\n ],\n "Members only": [\n null,\n ""\n ],\n "Moderated": [\n null,\n "מבוקר"\n ],\n "Non-anonymous": [\n null,\n "לא-אנונימי"\n ],\n "Persistent": [\n null,\n ""\n ],\n "Public": [\n null,\n "פומבי"\n ],\n "Semi-anonymous": [\n null,\n "אנונימי-למחצה"\n ],\n "Unmoderated": [\n null,\n "לא מבוקר"\n ],\n "Unsecured": [\n null,\n ""\n ],\n "Messages are archived on the server": [\n null,\n ""\n ],\n "All other room occupants can see your XMPP username": [\n null,\n ""\n ],\n "This room persists even if it\'s unoccupied": [\n null,\n ""\n ],\n "Only moderators can see your XMPP username": [\n null,\n ""\n ],\n "This room will disappear once the last person leaves": [\n null,\n ""\n ],\n "You are about to invite %1$s to the chat room \\"%2$s\\". ": [\n null,\n "אתה עומד להזמין את %1$s לחדר שיחה \\"%2$s\\". "\n ],\n "You may optionally include a message, explaining the reason for the invitation.": [\n null,\n "באפשרותך להכליל הודעה, אשר מסבירה את הסיבה להזמנה."\n ],\n "Please enter a valid XMPP username": [\n null,\n ""\n ],\n "Room name": [\n null,\n "שם חדר"\n ],\n "Server": [\n null,\n "שרת"\n ],\n "Join Room": [\n null,\n "הצטרף לחדר"\n ],\n "Show rooms": [\n null,\n "הצג חדרים"\n ],\n "Rooms": [\n null,\n "חדרים"\n ],\n "No rooms on %1$s": [\n null,\n "אין חדרים על %1$s"\n ],\n "Description:": [\n null,\n "תיאור:"\n ],\n "Room Address (JID):": [\n null,\n ""\n ],\n "Occupants:": [\n null,\n "נוכחים:"\n ],\n "Features:": [\n null,\n "תכונות:"\n ],\n "Requires authentication": [\n null,\n "מצריך אישור"\n ],\n "Requires an invitation": [\n null,\n "מצריך הזמנה"\n ],\n "Open room": [\n null,\n "חדר פתוח"\n ],\n "Permanent room": [\n null,\n "חדר צמיתה"\n ],\n "Temporary room": [\n null,\n "חדר זמני"\n ],\n "%1$s has invited you to join a chat room: %2$s": [\n null,\n "%1$s הזמינך להצטרף לחדר שיחה: %2$s"\n ],\n "%1$s has invited you to join a chat room: %2$s, and left the following reason: \\"%3$s\\"": [\n null,\n "%1$s הזמינך להצטרף לחדר שיחה: %2$s, והשאיר את הסיבה הבאה: \\"%3$s\\""\n ],\n "Notification from %1$s": [\n null,\n ""\n ],\n "%1$s says": [\n null,\n ""\n ],\n "wants to be your contact": [\n null,\n ""\n ],\n "Re-establishing encrypted session": [\n null,\n "בסס מחדש ישיבה מוצפנת"\n ],\n "Generating private key.": [\n null,\n "כעת מפיק מפתח פרטי."\n ],\n "Your browser might become unresponsive.": [\n null,\n "הדפדפן שלך עשוי שלא להגיב."\n ],\n "Authentication request from %1$s\\n\\nYour chat contact is attempting to verify your identity, by asking you the question below.\\n\\n%2$s": [\n null,\n "בקשת אימות מאת %1$s\\n\\nהאיש קשר שלך מנסה לאמת את הזהות שלך, בעזרת שאילת השאלה שלהלן.\\n\\n%2$s"\n ],\n "Could not verify this user\'s identify.": [\n null,\n "לא היתה אפשרות לאמת את זהות משתמש זה."\n ],\n "Exchanging private key with contact.": [\n null,\n "מחליף מפתח פרטי עם איש קשר."\n ],\n "Your messages are not encrypted anymore": [\n null,\n "ההודעות שלך אינן מוצפנות עוד"\n ],\n "Your messages are now encrypted but your contact\'s identity has not been verified.": [\n null,\n "ההודעות שלך מוצפנות כעת אך זהות האיש קשר שלך טרם אומתה."\n ],\n "Your contact\'s identify has been verified.": [\n null,\n "זהות האיש קשר שלך אומתה."\n ],\n "Your contact has ended encryption on their end, you should do the same.": [\n null,\n "האיש קשר סיים הצפנה בקצה שלהם, עליך לעשות זאת גם כן."\n ],\n "Your message could not be sent": [\n null,\n "ההודעה שלך לא היתה יכולה להישלח"\n ],\n "We received an unencrypted message": [\n null,\n "אנחנו קיבלנו הודעה לא מוצפנת"\n ],\n "We received an unreadable encrypted message": [\n null,\n "אנחנו קיבלנו הודעה מוצפנת לא קריאה"\n ],\n "Here are the fingerprints, please confirm them with %1$s, outside of this chat.\\n\\nFingerprint for you, %2$s: %3$s\\n\\nFingerprint for %1$s: %4$s\\n\\nIf you have confirmed that the fingerprints match, click OK, otherwise click Cancel.": [\n null,\n "הרי טביעות האצבע, אנא אמת אותן עם %1$s, מחוץ לשיחה זו.\\n\\nטביעת אצבע עבורך, %2$s: %3$s\\n\\nטביעת אצבע עבור %1$s: %4$s\\n\\nהיה ואימתת כי טביעות האצבע תואמות, לחץ אישור (OK), אחרת לחץ ביטול (Cancel)."\n ],\n "You will be prompted to provide a security question and then an answer to that question.\\n\\nYour contact will then be prompted the same question and if they type the exact same answer (case sensitive), their identity will be verified.": [\n null,\n "אתה תתבקש לספק שאלת אבטחה ולאחריה תשובה לשאלה הזו.\\n\\nהאיש קשר יתבקש עובר זאת לאותה שאלת אבטחה ואם אלו יקלידו את אותה התשובה במדויק (case sensitive), זהותם תאומת."\n ],\n "What is your security question?": [\n null,\n "מהי שאלת האבטחה שלך?"\n ],\n "What is the answer to the security question?": [\n null,\n "מהי התשובה לשאלת האבטחה?"\n ],\n "Invalid authentication scheme provided": [\n null,\n "סופקה סכימת אימות שגויה"\n ],\n "Your messages are not encrypted. Click here to enable OTR encryption.": [\n null,\n "ההודעות שלך אינן מוצפנות. לחץ כאן כדי לאפשר OTR."\n ],\n "Your messages are encrypted, but your contact has not been verified.": [\n null,\n "ההודעות שלך מוצפנות כעת, אך האיש קשר שלך טרם אומת."\n ],\n "Your messages are encrypted and your contact verified.": [\n null,\n "ההודעות שלך מוצפנות כעת והאיש קשר שלך אומת."\n ],\n "Your contact has closed their end of the private session, you should do the same": [\n null,\n "האיש קשר סגר את קצה ישיבה פרטית שלהם, עליך לעשות זאת גם כן"\n ],\n "End encrypted conversation": [\n null,\n "סיים ישיבה מוצפנת"\n ],\n "Refresh encrypted conversation": [\n null,\n "רענן ישיבה מוצפנת"\n ],\n "Start encrypted conversation": [\n null,\n "התחל ישיבה מוצפנת"\n ],\n "Verify with fingerprints": [\n null,\n "אמת בעזרת טביעות אצבע"\n ],\n "Verify with SMP": [\n null,\n "אמת בעזרת SMP"\n ],\n "What\'s this?": [\n null,\n "מה זה?"\n ],\n "unencrypted": [\n null,\n "לא מוצפנת"\n ],\n "unverified": [\n null,\n "לא מאומתת"\n ],\n "verified": [\n null,\n "מאומתת"\n ],\n "finished": [\n null,\n "מוגמרת"\n ],\n " e.g. conversejs.org": [\n null,\n " למשל conversejs.org"\n ],\n "Your XMPP provider\'s domain name:": [\n null,\n "שם מתחם של ספק XMPP שלך:"\n ],\n "Fetch registration form": [\n null,\n "משוך טופס הרשמה"\n ],\n "Tip: A list of public XMPP providers is available": [\n null,\n "טיפ: רשימה פומבית של ספקי XMPP הינה זמינה"\n ],\n "here": [\n null,\n "כאן"\n ],\n "Register": [\n null,\n "הירשם"\n ],\n "Sorry, the given provider does not support in band account registration. Please try with a different provider.": [\n null,\n "מצטערים, הספק שניתן לא תומך ברישום חשבונות in band. אנא נסה עם ספק אחר."\n ],\n "Requesting a registration form from the XMPP server": [\n null,\n "כעת מבקש טופס הרשמה מתוך שרת XMPP"\n ],\n "Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?": [\n null,\n "משהו השתבש במהלך ביסוס חיבור עם \\"%1$s\\". האם אתה בטוח כי זה קיים?"\n ],\n "Now logging you in": [\n null,\n "כעת מחבר אותך פנימה"\n ],\n "Registered successfully": [\n null,\n "נרשם בהצלחה"\n ],\n "Retry": [\n null,\n ""\n ],\n "This contact is busy": [\n null,\n "איש קשר זה עסוק"\n ],\n "This contact is online": [\n null,\n "איש קשר זה מקוון"\n ],\n "This contact is offline": [\n null,\n "איש קשר זה אינו מקוון"\n ],\n "This contact is unavailable": [\n null,\n "איש קשר זה לא זמין"\n ],\n "This contact is away for an extended period": [\n null,\n "איש קשר זה נעדר למשך זמן ממושך"\n ],\n "This contact is away": [\n null,\n "איש קשר זה הינו נעדר"\n ],\n "Groups": [\n null,\n "קבוצות"\n ],\n "My contacts": [\n null,\n "האנשי קשר שלי"\n ],\n "Pending contacts": [\n null,\n "אנשי קשר ממתינים"\n ],\n "Contact requests": [\n null,\n "בקשות איש קשר"\n ],\n "Ungrouped": [\n null,\n "ללא קבוצה"\n ],\n "Filter": [\n null,\n ""\n ],\n "State": [\n null,\n ""\n ],\n "Any": [\n null,\n ""\n ],\n "Unread": [\n null,\n ""\n ],\n "Chatty": [\n null,\n ""\n ],\n "Extended Away": [\n null,\n ""\n ],\n "Click to chat with this contact": [\n null,\n "לחץ כדי לשוחח עם איש קשר זה"\n ],\n "Name": [\n null,\n "שם"\n ],\n "Are you sure you want to remove this contact?": [\n null,\n "האם אתה בטוח כי ברצונך להסיר את איש קשר זה?"\n ],\n "Are you sure you want to decline this contact request?": [\n null,\n "האם אתה בטוח כי ברצונך לסרב את בקשת איש קשר זה?"\n ]\n }\n }\n}';}); @@ -45774,375 +44745,22 @@ require(["strophe-polyfill"]); })); /* jshint ignore:end */ ; -/* Lo-Dash Template Loader v1.0.1 - * Copyright 2015, Tim Branyen (@tbranyen). - * loader.js may be freely distributed under the MIT license. - */ -(function(global) { -"use strict"; - -// Cache used to map configuration options between load and write. -var buildMap = {}; - -// Alias the correct `nodeRequire` method. -var nodeRequire = typeof requirejs === "function" && requirejs.nodeRequire; - -// Strips trailing `/` from url fragments. -var stripTrailing = function(prop) { - return prop.replace(/(\/$)/, ''); -}; - -// Define the plugin using the CommonJS syntax. -define('tpl',['require','exports','module','lodash'],function(require, exports) { - var _ = require("lodash"); - - exports.version = "1.0.1"; - - // Invoked by the AMD builder, passed the path to resolve, the require - // function, done callback, and the configuration options. - exports.load = function(name, req, load, config) { - var isDojo; - - // Dojo provides access to the config object through the req function. - if (!config) { - config = require.rawConfig; - isDojo = true; - } - - var contents = ""; - var settings = configure(config); - - // If the baseUrl and root are the same, just null out the root. - if (stripTrailing(config.baseUrl) === stripTrailing(settings.root)) { - settings.root = ''; - } - - var url = require.toUrl(settings.root + name + settings.ext); - - if (isDojo && url.indexOf(config.baseUrl) !== 0) { - url = stripTrailing(config.baseUrl) + url; - } - - // Builds with r.js require Node.js to be installed. - if (config.isBuild) { - // If in Node, get access to the filesystem. - var fs = nodeRequire("fs"); - - try { - // First try reading the filepath as-is. - contents = String(fs.readFileSync(url)); - } catch(ex) { - // If it failed, it's most likely because of a leading `/` and not an - // absolute path. Remove the leading slash and try again. - if (url.slice(0, 1) === "/") { - url = url.slice(1); - } - - // Try reading again with the leading `/`. - contents = String(fs.readFileSync(url)); - } - - // Read in the file synchronously, as RequireJS expects, and return the - // contents. Process as a Lo-Dash template. - buildMap[name] = _.template(contents); - - return load(); - } - - // Create a basic XHR. - var xhr = new XMLHttpRequest(); - - // Wait for it to load. - xhr.onreadystatechange = function() { - if (xhr.readyState === 4) { - var templateSettings = _.clone(settings.templateSettings); - - // Attach the sourceURL. - templateSettings.sourceURL = url; - - // Process as a Lo-Dash template and cache. - buildMap[name] = _.template(xhr.responseText, templateSettings); - - // Return the compiled template. - load(buildMap[name]); - } - }; - - // Initiate the fetch. - xhr.open("GET", url, true); - xhr.send(null); - }; - - // Also invoked by the AMD builder, this writes out a compatible define - // call that will work with loaders such as almond.js that cannot read - // the configuration data. - exports.write = function(pluginName, moduleName, write) { - var template = buildMap[moduleName].source; - - // Write out the actual definition - write(strDefine(pluginName, moduleName, template)); - }; - - // This is for curl.js/cram.js build-time support. - exports.compile = function(pluginName, moduleName, req, io, config) { - configure(config); - - // Ask cram to fetch the template file (resId) and pass it to `write`. - io.read(moduleName, write, io.error); - - function write(template) { - // Write-out define(id,function(){return{/* template */}}); - io.write(strDefine(pluginName, moduleName, template)); - } - }; - - // Crafts the written definition form of the module during a build. - function strDefine(pluginName, moduleName, template) { - return [ - "define('", pluginName, "!", moduleName, "', ", "['lodash'], ", - [ - "function(_) {", - "return ", template, ";", - "}" - ].join(""), - ");\n" - ].join(""); - } - - function configure(config) { - // Default settings point to the project root and using html files. - var settings = _.extend({ - ext: ".html", - root: config.baseUrl, - templateSettings: {} - }, config.lodashLoader); - - // Ensure the root has been properly configured with a trailing slash, - // unless it's an empty string or undefined, in which case work off the - // baseUrl. - if (settings.root && settings.root.slice(-1) !== "/") { - settings.root += "/"; - } - - // Set the custom passed in template settings. - _.extend(_.templateSettings, settings.templateSettings); - - return settings; - } -}); - -})(typeof global === "object" ? global : this); - - -define('tpl!field', ['lodash'], function(_) {return function(obj) { -obj || (obj = {}); -var __t, __p = '', __e = _.escape, __j = Array.prototype.join; -function print() { __p += __j.call(arguments, '') } -with (obj) { -__p += ''; - if (_.isArray(value)) { ; -__p += '\n '; - _.each(value,function(arrayValue) { ; -__p += '' + -__e(arrayValue) + -''; - }); ; -__p += '\n'; - } else { ; -__p += '\n ' + -__e(value) + -'\n'; - } ; -__p += '\n'; - -} -return __p -};}); - - -define('tpl!select_option', ['lodash'], function(_) {return function(obj) { -obj || (obj = {}); -var __t, __p = '', __e = _.escape, __j = Array.prototype.join; -function print() { __p += __j.call(arguments, '') } -with (obj) { -__p += '