PageSourceSearch

https://tausendseencard.de/

html tausendseencard.de collected 2026-09-26 06:25:32 UTC 70,634 bytes, 1,775 lines download raw bytes

1<html itemscope itemtype="http://schema.org/Product" prefix="og: http://ogp.me/ns#" xmlns="http://www.w3.org/1999/html">
2  <head>
3    
4    <meta charset="utf-8">
5    <meta http-equiv="content-type" content="text/html;charset=utf-8">
6    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
7    <meta name="theme-color" content="#2A3A4B">
8    <base href="/" />
9
10
11    <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
12    <link rel="stylesheet" href="css/all.css?v=5415">
13    <link rel="manifest" id="manifest-placeholder">
14
15    
15<script>
16        // Dynamically generate the manifest location URL. It must be served from the document origin, and we may have
17        // the base pointing to the CDN. This way we can generate a full URL which will bypass the base.
18        document.querySelector('#manifest-placeholder').setAttribute('href', window.location.origin + '/manifest.json');
19
20        document.addEventListener('DOMContentLoaded', () => {
21            if (!JitsiMeetJS.app) {
22                return;
23            }
24
25            JitsiMeetJS.app.renderEntryPoint({
26                Component: JitsiMeetJS.app.entryPoints.APP
27            })
28
29            const inIframe = () => {
30                try {
31                    return window.self !== window.top;
32                } catch (e) {
33                    return true;
34                }
35            };
36
37            const isElectron = navigator.userAgent.includes('Electron');
38            const shouldRegisterWorker = !isElectron && !inIframe() && 'serviceWorker' in navigator;
39
40            if (shouldRegisterWorker) {
41                navigator.serviceWorker
42                    .register(window.location.origin + '/pwa-worker.js')
43                    .then(reg => {
44                        console.log('Service worker registered.', reg);
45                    })
46                    .catch(err => {
47                        console.log(err);
48                    });
49            }
50        });
51    </script>
51
52    
52<script>
53        // IE11 and earlier can be identified via their user agent and be
54        // redirected to a page that is known to have no newer js syntax.
55        if (window.navigator.userAgent.match(/(MSIE|Trident)/)) {
56            var roomName = encodeURIComponent(window.location.pathname);
57            window.location.href = "static/recommendedBrowsers.html" + "?room=" + roomName;
58        }
59
60        window.indexLoadedTime = window.performance.now();
61        console.log("(TIME) index.html loaded:\t", indexLoadedTime);
62        // XXX the code below listeners for errors and displays an error message
63        // in the document body when any of the required files fails to load.
64        // The intention is to prevent from displaying broken page.
65        var criticalFiles = [
66            "config.js",
67            "utils.js",
68            "do_external_connect.js",
69            "interface_config.js",
70            "logging_config.js",
71            "lib-jitsi-meet.min.js",
72            "app.bundle.min.js",
73            "all.css?v=5415"
74        ];
75        var loadErrHandler = function(e) {
76            var target = e.target;
77            // Error on 
77<script> and <link>(CSS)
78            // 
78<script> will have .src and <link> .href
79            var fileRef = (target.src ? target.src : target.href);
80            if (("SCRIPT" === target.tagName || "LINK" === target.tagName)
81                && criticalFiles.some(
82                    function(file) { return fileRef.indexOf(file) !== -1 })) {
83                window.onload = function() {
84                    // The whole complex part below implements page reloads with
85                    // "exponential backoff". The retry attempt is passes as
86                    // "rCounter" query parameter
87                    var href = window.location.href;
88
89                    var retryMatch = href.match(/.+(\?|&)rCounter=(\d+)/);
90                    var retryCountStr = retryMatch ? retryMatch[2] : "0";
91                    var retryCount = Number.parseInt(retryCountStr);
92
93                    if (retryMatch == null) {
94                        var separator = href.indexOf("?") === -1 ? "?" : "&";
95                        var hashIdx = href.indexOf("#");
96
97                        if (hashIdx === -1) {
98                            href += separator + "rCounter=1";
99                        } else {
100                            var hashPart = href.substr(hashIdx);
101
102                            href = href.substr(0, hashIdx)
103                                + separator + "rCounter=1" + hashPart;
104                        }
105                    } else {
106                        var separator = retryMatch[1];
107
108                        href = href.replace(
109                            /(\?|&)rCounter=(\d+)/,
110                            separator + "rCounter=" + (retryCount + 1));
111                    }
112
113                    var delay = Math.pow(2, retryCount) * 2000;
114                    if (isNaN(delay) || delay < 2000 || delay > 60000)
115                        delay = 10000;
116
117                    var showMoreText = "show more";
118                    var showLessText = "show less";
119
120                    document.body.innerHTML
121                        = "<div style='"
122                        + "position: absolute;top: 50%;left: 50%;"
123                        + "text-align: center;"
124                        + "font-size: medium;"
125                        + "font-weight: 400;"
126                        + "transform: translate(-50%, -50%)'>"
127                        + "Uh oh! We couldn't fully download everything we needed :("
128                        + "<br/> "
129                        + "We will try again shortly. In the mean time, check for problems with your Internet connection!"
130                        + "<br/><br/> "
131                        + "<div id='moreInfo' style='"
132                        + "display: none;'>" + "Missing " + fileRef
133                        + "<br/><br/></div>"
134                        + "<a id='showMore' style='"
135                        + "text-decoration: underline;"
136                        + "font-size:small;"
137                        + "cursor: pointer'>" + showMoreText + "</a>"
138                        + "&nbsp;&nbsp;&nbsp;"
139                        + "<a id ='reloadLink' style='"
140                        + "text-decoration: underline;"
141                        + "font-size:small;"
142                        + "'>reload now</a>"
143                        + "</div>";
144
145                    var reloadLink = document.getElementById('reloadLink');
146                    reloadLink.setAttribute('href', href);
147
148                    var showMoreElem = document.getElementById("showMore");
149                    showMoreElem.addEventListener('click', function () {
150                            var moreInfoElem
151                                    = document.getElementById("moreInfo");
152
153                            if (showMoreElem.innerHTML === showMoreText) {
154                                moreInfoElem.setAttribute(
155                                    "style",
156                                    "display: block;"
157                                    + "color:#FF991F;"
158                                    + "font-size:small;"
159                                    + "user-select:text;");
160                                showMoreElem.innerHTML = showLessText;
161                            }
162                            else {
163                                moreInfoElem.setAttribute(
164                                    "style", "display: none;");
165                                showMoreElem.innerHTML = showMoreText;
166                            }
167                        });
168
169                    window.setTimeout(
170                        function () { window.location.replace(href); }, delay);
171
172                    // Call extra handler if defined.
173                    if (typeof postLoadErrorHandler === "function") {
174                        postLoadErrorHandler(fileRef);
175                    }
176                };
177                window.removeEventListener(
178                    'error', loadErrHandler, true /* capture phase */);
179            }
180        };
181        window.addEventListener(
182            'error', loadErrHandler, true /* capture phase type of listener */);
183    </script>
183
184    
184<script>/* eslint-disable no-unused-vars, no-var */
185
186var config = {
187    // Connection
188    //
189
190    hosts: {
191        // XMPP domain.
192        domain: 'jitsi-meet.example.com',
193
194        // When using authentication, domain for guest users.
195        // anonymousdomain: 'guest.example.com',
196
197        // Domain for authenticated users. Defaults to <domain>.
198        // authdomain: 'jitsi-meet.example.com',
199
200        // Focus component domain. Defaults to focus.<domain>.
201        // focus: 'focus.jitsi-meet.example.com',
202
203        // XMPP MUC domain. FIXME: use XEP-0030 to discover it.
204        muc: 'conference.jitsi-meet.example.com'
205    },
206
207    // BOSH URL. FIXME: use XEP-0156 to discover it.
208    bosh: '//jitsi-meet.example.com/http-bind',
209
210    // Websocket URL
211    // websocket: 'wss://jitsi-meet.example.com/xmpp-websocket',
212
213    // The real JID of focus participant - can be overridden here
214    // Do not change username - FIXME: Make focus username configurable
215    // https://github.com/jitsi/jitsi-meet/issues/7376
216    // focusUserJid: '[email protected]',
217
218
219    // Testing / experimental features.
220    //
221
222    testing: {
223        // Disables the End to End Encryption feature. Useful for debugging
224        // issues related to insertable streams.
225        // disableE2EE: false,
226
227        // Enables/disables thumbnail reordering in the filmstrip. It is enabled by default unless explicitly
228        // disabled by the below option.
229        // enableThumbnailReordering: true,
230
231        // Enables XMPP WebSocket (as opposed to BOSH) for the given amount of users.
232        // mobileXmppWsThreshold: 10 // enable XMPP WebSockets on mobile for 10% of the users
233
234        // P2P test mode disables automatic switching to P2P when there are 2
235        // participants in the conference.
236        // p2pTestMode: false,
237
238        // Enables the test specific features consumed by jitsi-meet-torture
239        // testMode: false
240
241        // Disables the auto-play behavior of *all* newly created video element.
242        // This is useful when the client runs on a host with limited resources.
243        // noAutoPlayVideo: false
244
245        // Enable / disable 500 Kbps bitrate cap on desktop tracks. When enabled,
246        // simulcast is turned off for the desktop share. If presenter is turned
247        // on while screensharing is in progress, the max bitrate is automatically
248        // adjusted to 2.5 Mbps. This takes a value between 0 and 1 which determines
249        // the probability for this to be enabled. This setting has been deprecated.
250        // desktopSharingFrameRate.max now determines whether simulcast will be enabled
251        // or disabled for the screenshare.
252        // capScreenshareBitrate: 1 // 0 to disable - deprecated.
253
254        // Enable callstats only for a percentage of users.
255        // This takes a value between 0 and 100 which determines the probability for
256        // the callstats to be enabled.
257        // callStatsThreshold: 5 // enable callstats for 5% of the users.
258    },
259
260    // Disables moderator indicators.
261    // disableModeratorIndicator: false,
262
263    // Disables the reactions feature.
264    // disableReactions: true,
265
266    // Disables polls feature.
267    // disablePolls: false,
268
269    // Disables ICE/UDP by filtering out local and remote UDP candidates in
270    // signalling.
271    // webrtcIceUdpDisable: false,
272
273    // Disables ICE/TCP by filtering out local and remote TCP candidates in
274    // signalling.
275    // webrtcIceTcpDisable: false,
276
277
278    // Media
279    //
280
281    // Enable unified plan implementation support on Chromium based browsers.
282    // enableUnifiedOnChrome: false,
283
284    // Audio
285
286    // Disable measuring of audio levels.
287    // disableAudioLevels: false,
288    // audioLevelsInterval: 200,
289
290    // Enabling this will run the lib-jitsi-meet no audio detection module which
291    // will notify the user if the current selected microphone has no audio
292    // input and will suggest another valid device if one is present.
293    enableNoAudioDetection: true,
294
295    // Enabling this will show a "Save Logs" link in the GSM popover that can be
296    // used to collect debug information (XMPP IQs, SDP offer/answer cycles)
297    // about the call.
298    // enableSaveLogs: false,
299
300    // Enabling this will hide the "Show More" link in the GSM popover that can be
301    // used to display more statistics about the connection (IP, Port, protocol, etc).
302    // disableShowMoreStats: true,
303
304    // Enabling this will run the lib-jitsi-meet noise detection module which will
305    // notify the user if there is noise, other than voice, coming from the current
306    // selected microphone. The purpose it to let the user know that the input could
307    // be potentially unpleasant for other meeting participants.
308    enableNoisyMicDetection: true,
309
310    // Start the conference in audio only mode (no video is being received nor
311    // sent).
312    // startAudioOnly: false,
313
314    // Every participant after the Nth will start audio muted.
315    // startAudioMuted: 10,
316
317    // Start calls with audio muted. Unlike the option above, this one is only
318    // applied locally. FIXME: having these 2 options is confusing.
319    // startWithAudioMuted: false,
320
321    // Enabling it (with #params) will disable local audio output of remote
322    // participants and to enable it back a reload is needed.
323    // startSilent: false
324
325    // Enables support for opus-red (redundancy for Opus).
326    // enableOpusRed: false,
327
328    // Specify audio quality stereo and opusMaxAverageBitrate values in order to enable HD audio.
329    // Beware, by doing so, you are disabling echo cancellation, noise suppression and AGC.
330    // audioQuality: {
331    //     stereo: false,
332    //     opusMaxAverageBitrate: null // Value to fit the 6000 to 510000 range.
333    // },
334
335    // Video
336
337    // Sets the preferred resolution (height) for local video. Defaults to 720.
338    // resolution: 720,
339
340    // Specifies whether the raised hand will hide when someone becomes a dominant speaker or not
341    // disableRemoveRaisedHandOnFocus: false,
342
343    // Specifies whether there will be a search field in speaker stats or not
344    // disableSpeakerStatsSearch: false,
345
346    // Specifies whether participants in speaker stats should be ordered or not, and with what priority
347    // speakerStatsOrder: [
348    //  'role', <- Moderators on top
349    //  'name', <- Alphabetically by name
350    //  'hasLeft', <- The ones that have left in the bottom
351    // ] <- the order of the array elements determines priority
352
353    // How many participants while in the tile view mode, before the receiving video quality is reduced from HD to SD.
354    // Use -1 to disable.
355    // maxFullResolutionParticipants: 2,
356
357    // w3c spec-compliant video constraints to use for video capture. Currently
358    // used by browsers that return true from lib-jitsi-meet's
359    // util#browser#usesNewGumFlow. The constraints are independent from
360    // this config's resolution value. Defaults to requesting an ideal
361    // resolution of 720p.
362    // constraints: {
363    //     video: {
364    //         height: {
365    //             ideal: 720,
366    //             max: 720,
367    //             min: 240
368    //         }
369    //     }
370    // },
371
372    // Enable / disable simulcast support.
373    // disableSimulcast: false,
374
375    // Enable / disable layer suspension.  If enabled, endpoints whose HD layers are not in use will be suspended
376    // (no longer sent) until they are requested again. This is enabled by default. This must be enabled for screen
377    // sharing to work as expected on Chrome. Disabling this might result in low resolution screenshare being sent
378    // by the client.
379    // enableLayerSuspension: false,
380
381    // Every participant after the Nth will start video muted.
382    // startVideoMuted: 10,
383
384    // Start calls with video muted. Unlike the option above, this one is only
385    // applied locally. FIXME: having these 2 options is confusing.
386    // startWithVideoMuted: false,
387
388    // If set to true, prefer to use the H.264 video codec (if supported).
389    // Note that it's not recommended to do this because simulcast is not
390    // supported when  using H.264. For 1-to-1 calls this setting is enabled by
391    // default and can be toggled in the p2p section.
392    // This option has been deprecated, use preferredCodec under videoQuality section instead.
393    // preferH264: true,
394
395    // If set to true, disable H.264 video codec by stripping it out of the
396    // SDP.
397    // disableH264: false,
398
399    // Desktop sharing
400
401    // Optional desktop sharing frame rate options. Default value: min:5, max:5.
402    // desktopSharingFrameRate: {
403    //     min: 5,
404    //     max: 5
405    // },
406
407    // Try to start calls with screen-sharing instead of camera video.
408    // startScreenSharing: false,
409
410    // Recording
411
412    // Whether to enable file recording or not.
413    // fileRecordingsEnabled: false,
414    // Enable the dropbox integration.
415    // dropbox: {
416    //     appKey: '<APP_KEY>' // Specify your app key here.
417    //     // A URL to redirect the user to, after authenticating
418    //     // by default uses:
419    //     // 'https://jitsi-meet.example.com/static/oauth.html'
420    //     redirectURI:
421    //          'https://jitsi-meet.example.com/subfolder/static/oauth.html'
422    // },
423    // When integrations like dropbox are enabled only that will be shown,
424    // by enabling fileRecordingsServiceEnabled, we show both the integrations
425    // and the generic recording service (its configuration and storage type
426    // depends on jibri configuration)
427    // fileRecordingsServiceEnabled: false,
428    // Whether to show the possibility to share file recording with other people
429    // (e.g. meeting participants), based on the actual implementation
430    // on the backend.
431    // fileRecordingsServiceSharingEnabled: false,
432
433    // Whether to enable live streaming or not.
434    // liveStreamingEnabled: false,
435
436    // Transcription (in interface_config,
437    // subtitles and buttons can be configured)
438    // transcribingEnabled: false,
439
440    // If true transcriber will use the application language.
441    // The application language is either explicitly set by participants in their settings or automatically
442    // detected based on the environment, e.g. if the app is opened in a chrome instance which is using french as its
443    // default language then transcriptions for that participant will be in french.
444    // Defaults to true.
445    // transcribeWithAppLanguage: true,
446
447    // Transcriber language. This settings will only work if "transcribeWithAppLanguage" is explicitly set to false.
448    // Available languages can be found in
449    // ./src/react/features/transcribing/transcriber-langs.json.
450    // preferredTranscribeLanguage: 'en-US',
451
452    // Enables automatic turning on captions when recording is started
453    // autoCaptionOnRecord: false,
454
455    // Misc
456
457    // Default value for the channel "last N" attribute. -1 for unlimited.
458    channelLastN: -1,
459
460    // Connection indicators
461    // connectionIndicators: {
462    //     autoHide: true,
463    //     autoHideTimeout: 5000,
464    //     disabled: false,
465    //     inactiveDisabled: false
466    // },
467
468    // Provides a way for the lastN value to be controlled through the UI.
469    // When startLastN is present, conference starts with a last-n value of startLastN and channelLastN
470    // value will be used when the quality level is selected using "Manage Video Quality" slider.
471    // startLastN: 1,
472
473    // Provides a way to use different "last N" values based on the number of participants in the conference.
474    // The keys in an Object represent number of participants and the values are "last N" to be used when number of
475    // participants gets to or above the number.
476    //
477    // For the given example mapping, "last N" will be set to 20 as long as there are at least 5, but less than
478    // 29 participants in the call and it will be lowered to 15 when the 30th participant joins. The 'channelLastN'
479    // will be used as default until the first threshold is reached.
480    //
481    // lastNLimits: {
482    //     5: 20,
483    //     30: 15,
484    //     50: 10,
485    //     70: 5,
486    //     90: 2
487    // },
488
489    // Provides a way to translate the legacy bridge signaling messages, 'LastNChangedEvent',
490    // 'SelectedEndpointsChangedEvent' and 'ReceiverVideoConstraint' into the new 'ReceiverVideoConstraints' message
491    // that invokes the new bandwidth allocation algorithm in the bridge which is described here
492    // - https://github.com/jitsi/jitsi-videobridge/blob/master/doc/allocation.md.
493    // useNewBandwidthAllocationStrategy: false,
494
495    // Specify the settings for video quality optimizations on the client.
496    // videoQuality: {
497    //    // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified
498    //    // here will be removed from the list of codecs present in the SDP answer generated by the client. If the
499    //    // same codec is specified for both the disabled and preferred option, the disable settings will prevail.
500    //    // Note that 'VP8' cannot be disabled since it's a mandatory codec, the setting will be ignored in this case.
501    //    disabledCodec: 'H264',
502    //
503    //    // Provides a way to set a preferred video codec for the JVB connection. If 'H264' is specified here,
504    //    // simulcast will be automatically disabled since JVB doesn't support H264 simulcast yet. This will only
505    //    // rearrange the the preference order of the codecs in the SDP answer generated by the browser only if the
506    //    // preferred codec specified here is present. Please ensure that the JVB offers the specified codec for this
507    //    // to take effect.
508    //    preferredCodec: 'VP8',
509    //
510    //    // Provides a way to enforce the preferred codec for the conference even when the conference has endpoints
511    //    // that do not support the preferred codec. For example, older versions of Safari do not support VP9 yet.
512    //    // This will result in Safari not being able to decode video from endpoints sending VP9 video.
513    //    // When set to false, the conference falls back to VP8 whenever there is an endpoint that doesn't support the
514    //    // preferred codec and goes back to the preferred codec when that endpoint leaves.
515    //    // enforcePreferredCodec: false,
516    //
517    //    // Provides a way to configure the maximum bitrates that will be enforced on the simulcast streams for
518    //    // video tracks. The keys in the object represent the type of the stream (LD, SD or HD) and the values
519    //    // are the max.bitrates to be set on that particular type of stream. The actual send may vary based on
520    //    // the available bandwidth calculated by the browser, but it will be capped by the values specified here.
521    //    // This is currently not implemented on app based clients on mobile.
522    //    maxBitratesVideo: {
523    //          H264: {
524    //              low: 200000,
525    //              standard: 500000,
526    //              high: 1500000
527    //          },
528    //          VP8 : {
529    //              low: 200000,
530    //              standard: 500000,
531    //              high: 1500000
532    //          },
533    //          VP9: {
534    //              low: 100000,
535    //              standard: 300000,
536    //              high: 1200000
537    //          }
538    //    },
539    //
540    //    // The options can be used to override default thresholds of video thumbnail heights corresponding to
541    //    // the video quality levels used in the application. At the time of this writing the allowed levels are:
542    //    //     'low' - for the low quality level (180p at the time of this writing)
543    //    //     'standard' - for the medium quality level (360p)
544    //    //     'high' - for the high quality level (720p)
545    //    // The keys should be positive numbers which represent the minimal thumbnail height for the quality level.
546    //    //
547    //    // With the default config value below the application will use 'low' quality until the thumbnails are
548    //    // at least 360 pixels tall. If the thumbnail height reaches 720 pixels then the application will switch to
549    //    // the high quality.
550    //    minHeightForQualityLvl: {
551    //        360: 'standard',
552    //        720: 'high'
553    //    },
554    //
555    //    // Provides a way to resize the desktop track to 720p (if it is greater than 720p) before creating a canvas
556    //    // for the presenter mode (camera picture-in-picture mode with screenshare).
557    //    resizeDesktopForPresenter: false
558    // },
559
560    // // Options for the recording limit notification.
561    // recordingLimit: {
562    //
563    //    // The recording limit in minutes. Note: This number appears in the notification text
564    //    // but doesn't enforce the actual recording time limit. This should be configured in
565    //    // jibri!
566    //    limit: 60,
567    //
568    //    // The name of the app with unlimited recordings.
569    //    appName: 'Unlimited recordings APP',
570    //
571    //    // The URL of the app with unlimited recordings.
572    //    appURL: 'https://unlimited.recordings.app.com/'
573    // },
574
575    // Disables or enables RTX (RFC 4588) (defaults to false).
576    // disableRtx: false,
577
578    // Disables or enables TCC support in this client (default: enabled).
579    // enableTcc: true,
580
581    // Disables or enables REMB support in this client (default: enabled).
582    // enableRemb: true,
583
584    // Enables ICE restart logic in LJM and displays the page reload overlay on
585    // ICE failure. Current disabled by default because it's causing issues with
586    // signaling when Octo is enabled. Also when we do an "ICE restart"(which is
587    // not a real ICE restart), the client maintains the TCC sequence number
588    // counter, but the bridge resets it. The bridge sends media packets with
589    // TCC sequence numbers starting from 0.
590    // enableIceRestart: false,
591
592    // Enables forced reload of the client when the call is migrated as a result of
593    // the bridge going down.
594    // enableForcedReload: true,
595
596    // Use TURN/UDP servers for the jitsi-videobridge connection (by default
597    // we filter out TURN/UDP because it is usually not needed since the
598    // bridge itself is reachable via UDP)
599    // useTurnUdp: false
600
601    // Enable support for encoded transform in supported browsers. This allows
602    // E2EE to work in Safari if the corresponding flag is enabled in the browser.
603    // Experimental.
604    // enableEncodedTransformSupport: false,
605
606    // UI
607    //
608
609    // Disables responsive tiles.
610    // disableResponsiveTiles: false,
611
612    // Hides lobby button
613    // hideLobbyButton: false,
614
615    // Require users to always specify a display name.
616    // requireDisplayName: true,
617
618    // Whether to use a welcome page or not. In case it's false a random room
619    // will be joined when no room is specified.
620    enableWelcomePage: true,
621
622    // Disable app shortcuts that are registered upon joining a conference
623    // disableShortcuts: false,
624
625    // Disable initial browser getUserMedia requests.
626    // This is useful for scenarios where users might want to start a conference for screensharing only
627    // disableInitialGUM: false,
628
629    // Enabling the close page will ignore the welcome page redirection when
630    // a call is hangup.
631    // enableClosePage: false,
632
633    // Disable hiding of remote thumbnails when in a 1-on-1 conference call.
634    // Setting this to null, will also disable showing the remote videos
635    // when the toolbar is shown on mouse movements
636    // disable1On1Mode: null | false | true,
637
638    // Default language for the user interface.
639    // defaultLanguage: 'en',
640
641    // Disables profile and the edit of all fields from the profile settings (display name and email)
642    // disableProfile: false,
643
644    // Whether or not some features are checked based on token.
645    // enableFeaturesBasedOnToken: false,
646
647    // When enabled the password used for locking a room is restricted to up to the number of digits specified
648    // roomPasswordNumberOfDigits: 10,
649    // default: roomPasswordNumberOfDigits: false,
650
651    // Message to show the users. Example: 'The service will be down for
652    // maintenance at 01:00 AM GMT,
653    // noticeMessage: '',
654
655    // Enables calendar integration, depends on googleApiApplicationClientID
656    // and microsoftApiApplicationClientID
657    // enableCalendarIntegration: false,
658
659    // When 'true', it shows an intermediate page before joining, where the user can configure their devices.
660    // prejoinPageEnabled: false,
661
662    // When 'true', the user cannot edit the display name.
663    // (Mainly useful when used in conjuction with the JWT so the JWT name becomes read only.)
664    // readOnlyName: false,
665
666    // If etherpad integration is enabled, setting this to true will
667    // automatically open the etherpad when a participant joins.  This
668    // does not affect the mobile app since opening an etherpad
669    // obscures the conference controls -- it's better to let users
670    // choose to open the pad on their own in that case.
671    // openSharedDocumentOnJoin: false,
672
673    // If true, shows the unsafe room name warning label when a room name is
674    // deemed unsafe (due to the simplicity in the name) and a password is not
675    // set or the lobby is not enabled.
676    // enableInsecureRoomNameWarning: false,
677
678    // Whether to automatically copy invitation URL after creating a room.
679    // Document should be focused for this option to work
680    // enableAutomaticUrlCopy: false,
681
682    // Base URL for a Gravatar-compatible service. Defaults to libravatar.
683    // gravatarBaseURL: 'https://seccdn.libravatar.org/avatar/',
684
685    // App name to be displayed in the invitation email subject, as an alternative to
686    // interfaceConfig.APP_NAME.
687    // inviteAppName: null,
688
689    // Moved from interfaceConfig(TOOLBAR_BUTTONS).
690    // The name of the toolbar buttons to display in the toolbar, including the
691    // "More actions" menu. If present, the button will display. Exceptions are
692    // "livestreaming" and "recording" which also require being a moderator and
693    // some other values in config.js to be enabled. Also, the "profile" button will
694    // not display for users with a JWT.
695    // Notes:
696    // - it's impossible to choose which buttons go in the "More actions" menu
697    // - it's impossible to control the placement of buttons
698    // - 'desktop' controls the "Share your screen" button
699    // - if `toolbarButtons` is undefined, we fallback to enabling all buttons on the UI
700    // toolbarButtons: [
701    //    'camera',
702    //    'chat',
703    //    'closedcaptions',
704    //    'desktop',
705    //    'download',
706    //    'embedmeeting',
707    //    'etherpad',
708    //    'feedback',
709    //    'filmstrip',
710    //    'fullscreen',
711    //    'hangup',
712    //    'help',
713    //    'invite',
714    //    'livestreaming',
715    //    'microphone',
716    //    'mute-everyone',
717    //    'mute-video-everyone',
718    //    'participants-pane',
719    //    'profile',
720    //    'raisehand',
721    //    'recording',
722    //    'security',
723    //    'select-background',
724    //    'settings',
725    //    'shareaudio',
726    //    'sharedvideo',
727    //    'shortcuts',
728    //    'stats',
729    //    'tileview',
730    //    'toggle-camera',
731    //    'videoquality',
732    //    '__end'
733    // ],
734
735    // Holds values related to toolbar visibility control.
736    // toolbarConfig: {
737    //     // Moved from interfaceConfig.INITIAL_TOOLBAR_TIMEOUT
738    //     // The initial numer of miliseconds for the toolbar buttons to be visible on screen.
739    //     initialTimeout: 20000,
740    //     // Moved from interfaceConfig.TOOLBAR_TIMEOUT
741    //     // Number of miliseconds for the toolbar buttons to be visible on screen.
742    //     timeout: 4000,
743    //     // Moved from interfaceConfig.TOOLBAR_ALWAYS_VISIBLE
744    //     // Whether toolbar should be always visible or should hide after x miliseconds.
745    //     alwaysVisible: false
746    // },
747
748    // Toolbar buttons which have their click event exposed through the API on
749    // `toolbarButtonClicked` event instead of executing the normal click routine.
750    // buttonsWithNotifyClick: [
751    //    'camera',
752    //    'chat',
753    //    'closedcaptions',
754    //    'desktop',
755    //    'download',
756    //    'embedmeeting',
757    //    'etherpad',
758    //    'feedback',
759    //    'filmstrip',
760    //    'fullscreen',
761    //    'hangup',
762    //    'help',
763    //    'invite',
764    //    'livestreaming',
765    //    'microphone',
766    //    'mute-everyone',
767    //    'mute-video-everyone',
768    //    'participants-pane',
769    //    'profile',
770    //    'raisehand',
771    //    'recording',
772    //    'security',
773    //    'select-background',
774    //    'settings',
775    //    'shareaudio',
776    //    'sharedvideo',
777    //    'shortcuts',
778    //    'stats',
779    //    'tileview',
780    //    'toggle-camera',
781    //    'videoquality',
782    //    '__end'
783    // ],
784
785    // List of pre meeting screens buttons to hide. The values must be one or more of the 5 allowed buttons:
786    // 'microphone', 'camera', 'select-background', 'invite', 'settings'
787    // hiddenPremeetingButtons: [],
788
789    // Stats
790    //
791
792    // Whether to enable stats collection or not in the TraceablePeerConnection.
793    // This can be useful for debugging purposes (post-processing/analysis of
794    // the webrtc stats) as it is done in the jitsi-meet-torture bandwidth
795    // estimation tests.
796    // gatherStats: false,
797
798    // The interval at which PeerConnection.getStats() is called. Defaults to 10000
799    // pcStatsInterval: 10000,
800
801    // To enable sending statistics to callstats.io you must provide the
802    // Application ID and Secret.
803    // callStatsID: '',
804    // callStatsSecret: '',
805
806    // The callstats initialize config params as described in the API:
807    // https://docs.callstats.io/docs/javascript#callstatsinitialize-with-app-secret
808    // callStatsConfigParams: {
809    //     disableBeforeUnloadHandler: true, // disables callstats.js's window.onbeforeunload parameter.
810    //     applicationVersion: "app_version", // Application version specified by the developer.
811    //     disablePrecalltest: true, // disables the pre-call test, it is enabled by default.
812    //     siteID: "siteID", // The name/ID of the site/campus from where the call/pre-call test is made.
813    //     additionalIDs: { // additionalIDs object, contains application related IDs.
814    //         customerID: "Customer Identifier. Example, walmart.",
815    //         tenantID: "Tenant Identifier. Example, monster.",
816    //         productName: "Product Name. Example, Jitsi.",
817    //         meetingsName: "Meeting Name. Example, Jitsi loves callstats.",
818    //         serverName: "Server/MiddleBox Name. Example, jvb-prod-us-east-mlkncws12.",
819    //         pbxID: "PBX Identifier. Example, walmart.",
820    //         pbxExtensionID: "PBX Extension Identifier. Example, 5625.",
821    //         fqExtensionID: "Fully qualified Extension Identifier. Example, +71 (US) +5625.",
822    //         sessionID: "Session Identifier. Example, session-12-34"
823    //     },
824    //     collectLegacyStats: true, //enables the collection of legacy stats in chrome browser
825    //     collectIP: true //enables the collection localIP address
826    // },
827
828    // Enables sending participants' display names to callstats
829    // enableDisplayNameInStats: false,
830
831    // Enables sending participants' emails (if available) to callstats and other analytics
832    // enableEmailInStats: false,
833
834    // Controls the percentage of automatic feedback shown to participants when callstats is enabled.
835    // The default value is 100%. If set to 0, no automatic feedback will be requested
836    // feedbackPercentage: 100,
837
838    // Privacy
839    //
840
841    // If third party requests are disabled, no other server will be contacted.
842    // This means avatars will be locally generated and callstats integration
843    // will not function.
844    // disableThirdPartyRequests: false,
845
846
847    // Peer-To-Peer mode: used (if enabled) when there are just 2 participants.
848    //
849
850    p2p: {
851        // Enables peer to peer mode. When enabled the system will try to
852        // establish a direct connection when there are exactly 2 participants
853        // in the room. If that succeeds the conference will stop sending data
854        // through the JVB and use the peer to peer connection instead. When a
855        // 3rd participant joins the conference will be moved back to the JVB
856        // connection.
857        enabled: true,
858
859        // Enable unified plan implementation support on Chromium for p2p connection.
860        // enableUnifiedOnChrome: false,
861
862        // Sets the ICE transport policy for the p2p connection. At the time
863        // of this writing the list of possible values are 'all' and 'relay',
864        // but that is subject to change in the future. The enum is defined in
865        // the WebRTC standard:
866        // https://www.w3.org/TR/webrtc/#rtcicetransportpolicy-enum.
867        // If not set, the effective value is 'all'.
868        // iceTransportPolicy: 'all',
869
870        // If set to true, it will prefer to use H.264 for P2P calls (if H.264
871        // is supported). This setting is deprecated, use preferredCodec instead.
872        // preferH264: true,
873
874        // Provides a way to set the video codec preference on the p2p connection. Acceptable
875        // codec values are 'VP8', 'VP9' and 'H264'.
876        // preferredCodec: 'H264',
877
878        // If set to true, disable H.264 video codec by stripping it out of the
879        // SDP. This setting is deprecated, use disabledCodec instead.
880        // disableH264: false,
881
882        // Provides a way to prevent a video codec from being negotiated on the p2p connection.
883        // disabledCodec: '',
884
885        // How long we're going to wait, before going back to P2P after the 3rd
886        // participant has left the conference (to filter out page reload).
887        // backToP2PDelay: 5,
888
889        // The STUN servers that will be used in the peer to peer connections
890        stunServers: [
891
892            // { urls: 'stun:jitsi-meet.example.com:3478' },
893            { urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' }
894        ]
895    },
896
897    analytics: {
898        // True if the analytics should be disabled
899        // disabled: false,
900
901        // The Google Analytics Tracking ID:
902        // googleAnalyticsTrackingId: 'your-tracking-id-UA-123456-1'
903
904        // Matomo configuration:
905        // matomoEndpoint: 'https://your-matomo-endpoint/',
906        // matomoSiteID: '42',
907
908        // The Amplitude APP Key:
909        // amplitudeAPPKey: '<APP_KEY>'
910
911        // Configuration for the rtcstats server:
912        // By enabling rtcstats server every time a conference is joined the rtcstats
913        // module connects to the provided rtcstatsEndpoint and sends statistics regarding
914        // PeerConnection states along with getStats metrics polled at the specified
915        // interval.
916        // rtcstatsEnabled: true,
917
918        // In order to enable rtcstats one needs to provide a endpoint url.
919        // rtcstatsEndpoint: wss://rtcstats-server-pilot.jitsi.net/,
920
921        // The interval at which rtcstats will poll getStats, defaults to 1000ms.
922        // If the value is set to 0 getStats won't be polled and the rtcstats client
923        // will only send data related to RTCPeerConnection events.
924        // rtcstatsPolIInterval: 1000,
925
926        // Array of script URLs to load as lib-jitsi-meet "analytics handlers".
927        // scriptURLs: [
928        //      "libs/analytics-ga.min.js", // google-analytics
929        //      "https://example.com/my-custom-analytics.js"
930        // ],
931    },
932
933    // Logs that should go be passed through the 'log' event if a handler is defined for it
934    // apiLogLevels: ['warn', 'log', 'error', 'info', 'debug'],
935
936    // Information about the jitsi-meet instance we are connecting to, including
937    // the user region as seen by the server.
938    deploymentInfo: {
939        // shard: "shard1",
940        // region: "europe",
941        // userRegion: "asia"
942    },
943
944    // Array<string> of disabled sounds.
945    // Possible values:
946    // - 'ASKED_TO_UNMUTE_SOUND'
947    // - 'E2EE_OFF_SOUND'
948    // - 'E2EE_ON_SOUND'
949    // - 'INCOMING_MSG_SOUND'
950    // - 'KNOCKING_PARTICIPANT_SOUND'
951    // - 'LIVE_STREAMING_OFF_SOUND'
952    // - 'LIVE_STREAMING_ON_SOUND'
953    // - 'NO_AUDIO_SIGNAL_SOUND'
954    // - 'NOISY_AUDIO_INPUT_SOUND'
955    // - 'OUTGOING_CALL_EXPIRED_SOUND'
956    // - 'OUTGOING_CALL_REJECTED_SOUND'
957    // - 'OUTGOING_CALL_RINGING_SOUND'
958    // - 'OUTGOING_CALL_START_SOUND'
959    // - 'PARTICIPANT_JOINED_SOUND'
960    // - 'PARTICIPANT_LEFT_SOUND'
961    // - 'RAISE_HAND_SOUND'
962    // - 'REACTION_SOUND'
963    // - 'RECORDING_OFF_SOUND'
964    // - 'RECORDING_ON_SOUND'
965    // - 'TALK_WHILE_MUTED_SOUND'
966    // disabledSounds: [],
967
968    // DEPRECATED! Use `disabledSounds` instead.
969    // Decides whether the start/stop recording audio notifications should play on record.
970    // disableRecordAudioNotification: false,
971
972    // DEPRECATED! Use `disabledSounds` instead.
973    // Disables the sounds that play when other participants join or leave the
974    // conference (if set to true, these sounds will not be played).
975    // disableJoinLeaveSounds: false,
976
977    // DEPRECATED! Use `disabledSounds` instead.
978    // Disables the sounds that play when a chat message is received.
979    // disableIncomingMessageSound: false,
980
981    // Information for the chrome extension banner
982    // chromeExtensionBanner: {
983    //     // The chrome extension to be installed address
984    //     url: 'https://chrome.google.com/webstore/detail/jitsi-meetings/kglhbbefdnlheedjiejgomgmfplipfeb',
985
986    //     // Extensions info which allows checking if they are installed or not
987    //     chromeExtensionsInfo: [
988    //         {
989    //             id: 'kglhbbefdnlheedjiejgomgmfplipfeb',
990    //             path: 'jitsi-logo-48x48.png'
991    //         }
992    //     ]
993    // },
994
995    // Local Recording
996    //
997
998    // localRecording: {
999    // Enables local recording.
1000    // Additionally, 'localrecording' (all lowercase) needs to be added to
1001    // the `toolbarButtons`-array for the Local Recording button to show up
1002    // on the toolbar.
1003    //
1004    //     enabled: true,
1005    //
1006
1007    // The recording format, can be one of 'ogg', 'flac' or 'wav'.
1008    //     format: 'flac'
1009    //
1010
1011    // },
1012
1013    // Options related to end-to-end (participant to participant) ping.
1014    // e2eping: {
1015    //   // The interval in milliseconds at which pings will be sent.
1016    //   // Defaults to 10000, set to <= 0 to disable.
1017    //   pingInterval: 10000,
1018    //
1019    //   // The interval in milliseconds at which analytics events
1020    //   // with the measured RTT will be sent. Defaults to 60000, set
1021    //   // to <= 0 to disable.
1022    //   analyticsInterval: 60000,
1023    //   },
1024
1025    // If set, will attempt to use the provided video input device label when
1026    // triggering a screenshare, instead of proceeding through the normal flow
1027    // for obtaining a desktop stream.
1028    // NOTE: This option is experimental and is currently intended for internal
1029    // use only.
1030    // _desktopSharingSourceDevice: 'sample-id-or-label',
1031
1032    // If true, any checks to handoff to another application will be prevented
1033    // and instead the app will continue to display in the current browser.
1034    // disableDeepLinking: false,
1035
1036    // A property to disable the right click context menu for localVideo
1037    // the menu has option to flip the locally seen video for local presentations
1038    // disableLocalVideoFlip: false,
1039
1040    // A property used to unset the default flip state of the local video.
1041    // When it is set to 'true', the local(self) video will not be mirrored anymore.
1042    // doNotFlipLocalVideo: false,
1043
1044    // Mainly privacy related settings
1045
1046    // Disables all invite functions from the app (share, invite, dial out...etc)
1047    // disableInviteFunctions: true,
1048
1049    // Disables storing the room name to the recents list
1050    // doNotStoreRoom: true,
1051
1052    // Deployment specific URLs.
1053    // deploymentUrls: {
1054    //    // If specified a 'Help' button will be displayed in the overflow menu with a link to the specified URL for
1055    //    // user documentation.
1056    //    userDocumentationURL: 'https://docs.example.com/video-meetings.html',
1057    //    // If specified a 'Download our apps' button will be displayed in the overflow menu with a link
1058    //    // to the specified URL for an app download page.
1059    //    downloadAppsUrl: 'https://docs.example.com/our-apps.html'
1060    // },
1061
1062    // Options related to the remote participant menu.
1063    // remoteVideoMenu: {
1064    //     // If set to true the 'Kick out' button will be disabled.
1065    //     disableKick: true,
1066    //     // If set to true the 'Grant moderator' button will be disabled.
1067    //     disableGrantModerator: true
1068    // },
1069
1070    // If set to true all muting operations of remote participants will be disabled.
1071    // disableRemoteMute: true,
1072
1073    // Enables support for lip-sync for this client (if the browser supports it).
1074    // enableLipSync: false
1075
1076    /**
1077     External API url used to receive branding specific information.
1078     If there is no url set or there are missing fields, the defaults are applied.
1079     The config file should be in JSON.
1080     None of the fields are mandatory and the response must have the shape:
1081     {
1082         // The domain url to apply (will replace the domain in the sharing conference link/embed section)
1083         inviteDomain: 'example-company.org,
1084         // The hex value for the colour used as background
1085         backgroundColor: '#fff',
1086         // The url for the image used as background
1087         backgroundImageUrl: 'https://example.com/background-img.png',
1088         // The anchor url used when clicking the logo image
1089         logoClickUrl: 'https://example-company.org',
1090         // The url used for the image used as logo
1091         logoImageUrl: 'https://example.com/logo-img.png',
1092         // Overwrite for pool of background images for avatars
1093         avatarBackgrounds: ['url(https://example.com/avatar-background-1.png)', '#FFF'],
1094         // The lobby/prejoin screen background
1095         premeetingBackground: 'url(https://example.com/premeeting-background.png)'
1096     }
1097    */
1098    // dynamicBrandingUrl: '',
1099
1100    // When true the user cannot add more images to be used as virtual background.
1101    // Only the default ones from will be available.
1102    // disableAddingBackgroundImages: false,
1103
1104    // Sets the background transparency level. '0' is fully transparent, '1' is opaque.
1105    // backgroundAlpha: 1,
1106
1107    // The URL of the moderated rooms microservice, if available. If it
1108    // is present, a link to the service will be rendered on the welcome page,
1109    // otherwise the app doesn't render it.
1110    // moderatedRoomServiceUrl: 'https://moderated.jitsi-meet.example.com',
1111
1112    // If true, tile view will not be enabled automatically when the participants count threshold is reached.
1113    // disableTileView: true,
1114
1115    // Controls the visibility and behavior of the top header conference info labels.
1116    // If a label's id is not in any of the 2 arrays, it will not be visible at all on the header.
1117    // conferenceInfo: {
1118    //     // those labels will not be hidden in tandem with the toolbox.
1119    //     alwaysVisible: ['recording', 'local-recording'],
1120    //     // those labels will be auto-hidden in tandem with the toolbox buttons.
1121    //     autoHide: [
1122    //         'subject',
1123    //         'conference-timer',
1124    //         'participants-count',
1125    //         'e2ee',
1126    //         'transcribing',
1127    //         'video-quality',
1128    //         'insecure-room'
1129    //     ]
1130    // },
1131
1132    // Hides the conference subject
1133    // hideConferenceSubject: true,
1134
1135    // Hides the conference timer.
1136    // hideConferenceTimer: true,
1137
1138    // Hides the recording label
1139    // hideRecordingLabel: false,
1140
1141    // Hides the participants stats
1142    // hideParticipantsStats: true,
1143
1144    // Sets the conference subject
1145    // subject: 'Conference Subject',
1146
1147    // This property is related to the use case when jitsi-meet is used via the IFrame API. When the property is true
1148    // jitsi-meet will use the local storage of the host page instead of its own. This option is useful if the browser
1149    // is not persisting the local storage inside the iframe.
1150    // useHostPageLocalStorage: true,
1151
1152    // etherpad ("shared document") integration.
1153    //
1154
1155    // If set, add a "Open shared document" link to the bottom right menu that
1156    // will open an etherpad document.
1157    // etherpad_base: 'https://your-etherpad-installati.on/p/',
1158
1159    // If etherpad_base is set, and useRoomAsSharedDocumentName is set to true,
1160    // open a pad with the name of the room (lowercased) instead of a pad with a
1161    // random UUID.
1162    // useRoomAsSharedDocumentName: true,
1163
1164    // List of undocumented settings used in jitsi-meet
1165    /**
1166     _immediateReloadThreshold
1167     debug
1168     debugAudioLevels
1169     deploymentInfo
1170     dialInConfCodeUrl
1171     dialInNumbersUrl
1172     dialOutAuthUrl
1173     dialOutCodesUrl
1174     disableRemoteControl
1175     displayJids
1176     externalConnectUrl
1177     e2eeLabels
1178     firefox_fake_device
1179     googleApiApplicationClientID
1180     iAmRecorder
1181     iAmSipGateway
1182     microsoftApiApplicationClientID
1183     peopleSearchQueryTypes
1184     peopleSearchUrl
1185     requireDisplayName
1186     tokenAuthUrl
1187     */
1188
1189    /**
1190     * This property can be used to alter the generated meeting invite links (in combination with a branding domain
1191     * which is retrieved internally by jitsi meet) (e.g. https://meet.jit.si/someMeeting
1192     * can become https://brandedDomain/roomAlias)
1193     */
1194    // brandingRoomAlias: null,
1195
1196    // List of undocumented settings used in lib-jitsi-meet
1197    /**
1198     _peerConnStatusOutOfLastNTimeout
1199     _peerConnStatusRtcMuteTimeout
1200     abTesting
1201     avgRtpStatsN
1202     callStatsConfIDNamespace
1203     callStatsCustomScriptUrl
1204     desktopSharingSources
1205     disableAEC
1206     disableAGC
1207     disableAP
1208     disableHPF
1209     disableNS
1210     enableTalkWhileMuted
1211     forceJVB121Ratio
1212     forceTurnRelay
1213     hiddenDomain
1214     ignoreStartMuted
1215     websocketKeepAlive
1216     websocketKeepAliveUrl
1217     */
1218
1219    /**
1220     * Default interval (milliseconds) for triggering mouseMoved iframe API event
1221     */
1222    mouseMoveCallbackInterval: 1000,
1223
1224    /**
1225        Use this array to configure which notifications will be shown to the user
1226        The items correspond to the title or description key of that notification
1227        Some of these notifications also depend on some other internal logic to be displayed or not,
1228        so adding them here will not ensure they will always be displayed
1229
1230        A falsy value for this prop will result in having all notifications enabled (e.g null, undefined, false)
1231    */
1232    // notifications: [
1233    //     'connection.CONNFAIL', // shown when the connection fails,
1234    //     'dialog.cameraNotSendingData', // shown when there's no feed from user's camera
1235    //     'dialog.kickTitle', // shown when user has been kicked
1236    //     'dialog.liveStreaming', // livestreaming notifications (pending, on, off, limits)
1237    //     'dialog.lockTitle', // shown when setting conference password fails
1238    //     'dialog.maxUsersLimitReached', // shown when maximmum users limit has been reached
1239    //     'dialog.micNotSendingData', // shown when user's mic is not sending any audio
1240    //     'dialog.passwordNotSupportedTitle', // shown when setting conference password fails due to password format
1241    //     'dialog.recording', // recording notifications (pending, on, off, limits)
1242    //     'dialog.remoteControlTitle', // remote control notifications (allowed, denied, start, stop, error)
1243    //     'dialog.reservationError',
1244    //     'dialog.serviceUnavailable', // shown when server is not reachable
1245    //     'dialog.sessTerminated', // shown when there is a failed conference session
1246    //     'dialog.sessionRestarted', // show when a client reload is initiated because of bridge migration
1247    //     'dialog.tokenAuthFailed', // show when an invalid jwt is used
1248    //     'dialog.transcribing', // transcribing notifications (pending, off)
1249    //     'dialOut.statusMessage', // shown when dial out status is updated.
1250    //     'liveStreaming.busy', // shown when livestreaming service is busy
1251    //     'liveStreaming.failedToStart', // shown when livestreaming fails to start
1252    //     'liveStreaming.unavailableTitle', // shown when livestreaming service is not reachable
1253    //     'lobby.joinRejectedMessage', // shown when while in a lobby, user's request to join is rejected
1254    //     'lobby.notificationTitle', // shown when lobby is toggled and when join requests are allowed / denied
1255    //     'localRecording.localRecording', // shown when a local recording is started
1256    //     'notify.disconnected', // shown when a participant has left
1257    //     'notify.connectedOneMember', // show when a participant joined
1258    //     'notify.connectedTwoMembers', // show when two participants joined simultaneously
1259    //     'notify.connectedThreePlusMembers', // show when more than 2 participants joined simultaneously
1260    //     'notify.grantedTo', // shown when moderator rights were granted to a participant
1261    //     'notify.invitedOneMember', // shown when 1 participant has been invited
1262    //     'notify.invitedThreePlusMembers', // shown when 3+ participants have been invited
1263    //     'notify.invitedTwoMembers', // shown when 2 participants have been invited
1264    //     'notify.kickParticipant', // shown when a participant is kicked
1265    //     'notify.moderationStartedTitle', // shown when AV moderation is activated
1266    //     'notify.moderationStoppedTitle', // shown when AV moderation is deactivated
1267    //     'notify.moderationInEffectTitle', // shown when user attempts to unmute audio during AV moderation
1268    //     'notify.moderationInEffectVideoTitle', // shown when user attempts to enable video during AV moderation
1269    //     'notify.moderationInEffectCSTitle', // shown when user attempts to share content during AV moderation
1270    //     'notify.mutedRemotelyTitle', // shown when user is muted by a remote party
1271    //     'notify.mutedTitle', // shown when user has been muted upon joining,
1272    //     'notify.newDeviceAudioTitle', // prompts the user to use a newly detected audio device
1273    //     'notify.newDeviceCameraTitle', // prompts the user to use a newly detected camera
1274    //     'notify.passwordRemovedRemotely', // shown when a password has been removed remotely
1275    //     'notify.passwordSetRemotely', // shown when a password has been set remotely
1276    //     'notify.raisedHand', // shown when a partcipant used raise hand,
1277    //     'notify.startSilentTitle', // shown when user joined with 
1277no audio
1278    //     'notify.unmute', // shown to moderator when user raises hand during AV moderation
1279    //     'prejoin.errorDialOut',
1280    //     'prejoin.errorDialOutDisconnected',
1281    //     'prejoin.errorDialOutFailed',
1282    //     'prejoin.errorDialOutStatus',
1283    //     'prejoin.errorStatusCode',
1284    //     'prejoin.errorValidation',
1285    //     'recording.busy', // shown when recording service is busy
1286    //     'recording.failedToStart', // shown when recording fails to start
1287    //     'recording.unavailableTitle', // shown when recording service is not reachable
1288    //     'toolbar.noAudioSignalTitle', // shown when a broken mic is detected
1289    //     'toolbar.noisyAudioInputTitle', // shown when noise is detected for the current microphone
1290    //     'toolbar.talkWhileMutedPopup', // shown when user tries to speak while muted
1291    //     'transcribing.failedToStart' // shown when transcribing fails to start
1292    // ],
1293
1294    // Prevent the filmstrip from autohiding when screen width is under a certain threshold
1295    // disableFilmstripAutohiding: false,
1296
1297    // Specifies whether the chat emoticons are disabled or not
1298    // disableChatSmileys: false,
1299
1300    // Allow all above example options to include a trailing comma and
1301    // prevent fear when commenting out the last value.
1302    makeJsonParserHappy: 'even if last key had a trailing comma'
1303
1304    // no configuration value should follow this line.
1305};
1306
1307/* eslint-enable no-unused-vars, no-var */
1308
1309// Begin default config overrides.
1310
1311if (!config.hasOwnProperty('hosts')) config.hosts = {};
1312
1313config.hosts.domain = 'jitsi-video.inseciacloud.com';
1314config.focusUserJid = '[email protected]';
1315
1316config.hosts.muc = 'muc.jitsi-video.inseciacloud.com';
1317config.bosh = '/http-bind';
1318config.websocket = 'wss://jitsi-video.inseciacloud.com/xmpp-websocket';
1319// Video configuration.
1320//
1321
1322if (!config.hasOwnProperty('constraints')) config.constraints = {};
1323if (!config.constraints.hasOwnProperty('video')) config.constraints.video = {};
1324
1325config.resolution = 720;
1326config.constraints.video.height = { ideal: 720, max: 720, min: 180 };
1327config.constraints.video.width = { ideal: 1280, max: 1280, min: 320};
1328config.disableSimulcast = false;
1329config.startVideoMuted = 10;
1330config.startWithVideoMuted = false;
1331
1332// ScreenShare Configuration.
1333//
1334config.desktopSharingFrameRate = { min: 5, max: 5 };
1335
1336// Audio configuration.
1337//
1338
1339config.enableNoAudioDetection = true;
1340config.enableTalkWhileMuted = false;
1341config.disableAP = false;
1342config.stereo = false;
1343config.startAudioOnly = false;
1344config.startAudioMuted = 10;
1345config.startWithAudioMuted = false;
1346config.startSilent = false;
1347config.disableAudioLevels = false;
1348config.enableNoisyMicDetection = true;
1349
1350
1351// Peer-to-Peer options.
1352//
1353
1354if (!config.hasOwnProperty('p2p')) config.p2p = {};
1355
1356config.p2p.enabled = true;
1357
1358
1359// Etherpad
1360//
1361
1362// Recording.
1363//
1364
1365// Analytics.
1366//
1367
1368if (!config.hasOwnProperty('analytics')) config.analytics = {};
1369
1370// Enables callstatsUsername to be reported as statsId and used
1371// by callstats as repoted remote id.
1372config.enableStatsID = false;
1373
1374
1375// Dial in/out services.
1376//
1377
1378// Calendar service integration.
1379//
1380
1381config.enableCalendarIntegration = false;
1382
1383// Invitation service.
1384//
1385
1386// Miscellaneous.
1387//
1388
1389// Prejoin page.
1390config.prejoinPageEnabled = true;
1391
1392// Welcome page.
1393config.enableWelcomePage = true;
1394
1395// Close page.
1396config.enableClosePage = false;
1397
1398// Default language.
1399// Require users to always specify a display name.
1400config.requireDisplayName = false;
1401
1402// Chrome extension banner.
1403// Advanced.
1404//
1405
1406// Lipsync hack in jicofo, may not be safe.
1407config.enableLipSync = false;
1408
1409config.enableRemb = true;
1410config.enableTcc = true;
1411
1412// Enable IPv6 support.
1413config.useIPv6 = true;
1414
1415// Transcriptions (subtitles and buttons can be configured in interface_config)
1416config.transcribingEnabled = false;
1417
1418// Deployment information.
1419//
1420
1421if (!config.hasOwnProperty('deploymentInfo')) config.deploymentInfo = {};
1422
1423// Testing
1424//
1425
1426if (!config.hasOwnProperty('testing')) config.testing = {};
1427if (!config.testing.hasOwnProperty('octo')) config.testing.octo = {};
1428
1429config.testing.capScreenshareBitrate = 1;
1430config.testing.octo.probability = 0;
1431
1432// Deep Linking
1433config.disableDeepLinking = false;
1434
1435// P2P preferred codec
1436// enable preffered video Codec
1437if (!config.hasOwnProperty('videoQuality')) config.videoQuality = {};
1438config.videoQuality.enforcePreferredCodec = false;
1439
1440if (!config.videoQuality.hasOwnProperty('maxBitratesVideo')) config.videoQuality.maxBitratesVideo = {};
1441// Reactions
1442config.disableReactions = false;
1443
1444// Polls
1445config.disablePolls = false;
1446</script>
1446<!-- adapt to your needs, i.e. set hosts and bosh path -->
1447    
1448    
1448<script src="libs/do_external_connect.min.js?v=1"></script>
1448
1449    
1449<script>/* eslint-disable no-unused-vars, no-var, max-len */
1450/* eslint sort-keys: ["error", "asc", {"caseSensitive": false}] */
1451
1452/**
1453 * !!!IMPORTANT!!!
1454 *
1455 * This file is considered deprecated. All options will eventually be moved to
1456 * config.js, and no new options should be added here.
1457 */
1458
1459var interfaceConfig = {
1460    APP_NAME: 'Jitsi Meet',
1461    AUDIO_LEVEL_PRIMARY_COLOR: 'rgba(255,255,255,0.4)',
1462    AUDIO_LEVEL_SECONDARY_COLOR: 'rgba(255,255,255,0.2)',
1463
1464    /**
1465     * A UX mode where the last screen share participant is automatically
1466     * pinned. Valid values are the string "remote-only" so remote participants
1467     * get pinned but not local, otherwise any truthy value for all participants,
1468     * and any falsy value to disable the feature.
1469     *
1470     * Note: this mode is experimental and subject to breakage.
1471     */
1472    AUTO_PIN_LATEST_SCREEN_SHARE: 'remote-only',
1473    BRAND_WATERMARK_LINK: '',
1474
1475    CLOSE_PAGE_GUEST_HINT: false, // A html text to be shown to guests on the close page, false disables it
1476
1477    DEFAULT_BACKGROUND: '#474747',
1478    DEFAULT_LOCAL_DISPLAY_NAME: 'me',
1479    DEFAULT_LOGO_URL: 'images/watermark.svg',
1480    DEFAULT_REMOTE_DISPLAY_NAME: 'Fellow Jitster',
1481    DEFAULT_WELCOME_PAGE_LOGO_URL: 'images/watermark.svg',
1482
1483    DISABLE_DOMINANT_SPEAKER_INDICATOR: false,
1484
1485    /**
1486     * If true, notifications regarding joining/leaving are no longer displayed.
1487     */
1488    DISABLE_JOIN_LEAVE_NOTIFICATIONS: false,
1489
1490    /**
1491     * If true, presence status: busy, calling, connected etc. is not displayed.
1492     */
1493    DISABLE_PRESENCE_STATUS: false,
1494
1495    /**
1496     * Whether the ringing sound in the call/ring overlay is disabled. If
1497     * {@code undefined}, defaults to {@code false}.
1498     *
1499     * @type {boolean}
1500     */
1501    DISABLE_RINGING: false,
1502
1503    /**
1504     * Whether the speech to text transcription subtitles panel is disabled.
1505     * If {@code undefined}, defaults to {@code false}.
1506     *
1507     * @type {boolean}
1508     */
1509    DISABLE_TRANSCRIPTION_SUBTITLES: false,
1510
1511    /**
1512     * Whether or not the blurred video background for large video should be
1513     * displayed on browsers that can support it.
1514     */
1515    DISABLE_VIDEO_BACKGROUND: false,
1516
1517    DISPLAY_WELCOME_FOOTER: true,
1518    DISPLAY_WELCOME_PAGE_ADDITIONAL_CARD: false,
1519    DISPLAY_WELCOME_PAGE_CONTENT: false,
1520    DISPLAY_WELCOME_PAGE_TOOLBAR_ADDITIONAL_CONTENT: false,
1521
1522    ENABLE_DIAL_OUT: true,
1523
1524    ENABLE_FEEDBACK_ANIMATION: false, // Enables feedback star animation.
1525
1526    FILM_STRIP_MAX_HEIGHT: 120,
1527
1528    GENERATE_ROOMNAMES_ON_WELCOME_PAGE: true,
1529
1530    /**
1531     * Hide the logo on the deep linking pages.
1532     */
1533    HIDE_DEEP_LINKING_LOGO: false,
1534
1535    /**
1536     * Hide the invite prompt in the header when alone in the meeting.
1537     */
1538    HIDE_INVITE_MORE_HEADER: false,
1539
1540    JITSI_WATERMARK_LINK: 'https://jitsi.org',
1541
1542    LANG_DETECTION: true, // Allow i18n to detect the system language
1543    LIVE_STREAMING_HELP_LINK: 'https://jitsi.org/live', // Documentation reference for the live streaming feature.
1544    LOCAL_THUMBNAIL_RATIO: 16 / 9, // 16:9
1545
1546    /**
1547     * Maximum coefficient of the ratio of the large video to the visible area
1548     * after the large video is scaled to fit the window.
1549     *
1550     * @type {number}
1551     */
1552    MAXIMUM_ZOOMING_COEFFICIENT: 1.3,
1553
1554    /**
1555     * Whether the mobile app Jitsi Meet is to be promoted to participants
1556     * attempting to join a conference in a mobile Web browser. If
1557     * {@code undefined}, defaults to {@code true}.
1558     *
1559     * @type {boolean}
1560     */
1561    MOBILE_APP_PROMO: true,
1562
1563    /**
1564     * Specify custom URL for downloading android mobile app.
1565     */
1566    MOBILE_DOWNLOAD_LINK_ANDROID: 'https://play.google.com/store/apps/details?id=org.jitsi.meet',
1567
1568    /**
1569     * Specify custom URL for downloading f droid app.
1570     */
1571    MOBILE_DOWNLOAD_LINK_F_DROID: 'https://f-droid.org/en/packages/org.jitsi.meet/',
1572
1573    /**
1574     * Specify URL for downloading ios mobile app.
1575     */
1576    MOBILE_DOWNLOAD_LINK_IOS: 'https://itunes.apple.com/us/app/jitsi-meet/id1165103905',
1577
1578    NATIVE_APP_NAME: 'Jitsi Meet',
1579
1580    // Names of browsers which should show a warning stating the current browser
1581    // has a suboptimal experience. Browsers which are not listed as optimal or
1582    // unsupported are considered suboptimal. Valid values are:
1583    // chrome, chromium, edge, electron, firefox, nwjs, opera, safari
1584    OPTIMAL_BROWSERS: [ 'chrome', 'chromium', 'firefox', 'nwjs', 'electron', 'safari' ],
1585
1586    POLICY_LOGO: null,
1587    PROVIDER_NAME: 'Jitsi',
1588
1589    /**
1590     * If true, will display recent list
1591     *
1592     * @type {boolean}
1593     */
1594    RECENT_LIST_ENABLED: true,
1595    REMOTE_THUMBNAIL_RATIO: 1, // 1:1
1596
1597    SETTINGS_SECTIONS: [ 'devices', 'language', 'moderator', 'profile', 'calendar', 'sounds' ],
1598
1599    /**
1600     * Specify which sharing features should be displayed. If the value is not set
1601     * all sharing features will be shown. You can set [] to disable all.
1602     */
1603    // SHARING_FEATURES: ['email', 'url', 'dial-in', 'embed'],
1604
1605    SHOW_BRAND_WATERMARK: false,
1606
1607    /**
1608     * Decides whether the chrome extension banner should be rendered on the landing page and during the meeting.
1609     * If this is set to false, the banner will not be rendered at all. If set to true, the check for extension(s)
1610     * being already installed is done before rendering.
1611     */
1612    SHOW_CHROME_EXTENSION_BANNER: false,
1613
1614    SHOW_DEEP_LINKING_IMAGE: false,
1615    SHOW_JITSI_WATERMARK: true,
1616    SHOW_POWERED_BY: false,
1617    SHOW_PROMOTIONAL_CLOSE_PAGE: false,
1618
1619    /*
1620     * If indicated some of the error dialogs may point to the support URL for
1621     * help.
1622     */
1623    SUPPORT_URL: 'https://community.jitsi.org/',
1624
1625    // Browsers, in addition to those which do not fully support WebRTC, that
1626    // are not supported and should show the unsupported browser page.
1627    UNSUPPORTED_BROWSERS: [],
1628
1629    /**
1630     * Whether to show thumbnails in filmstrip as a column instead of as a row.
1631     */
1632    VERTICAL_FILMSTRIP: true,
1633
1634    // Determines how the video would fit the screen. 'both' would fit the whole
1635    // screen, 'height' would fit the original video height to the height of the
1636    // screen, 'width' would fit the original video width to the width of the
1637    // screen respecting ratio, 'nocrop' would make the video as large as
1638    // possible and preserve aspect ratio without cropping.
1639    VIDEO_LAYOUT_FIT: 'both',
1640
1641    /**
1642     * If true, hides the video quality label indicating the resolution status
1643     * of the current large video.
1644     *
1645     * @type {boolean}
1646     */
1647    VIDEO_QUALITY_LABEL_DISABLED: false,
1648
1649    /**
1650     * How many columns the tile view can expand to. The respected range is
1651     * between 1 and 5.
1652     */
1653    // TILE_VIEW_MAX_COLUMNS: 5,
1654
1655    /**
1656     * Specify Firebase dynamic link properties for the mobile apps.
1657     */
1658    // MOBILE_DYNAMIC_LINK: {
1659    //    APN: 'org.jitsi.meet',
1660    //    APP_CODE: 'w2atb',
1661    //    CUSTOM_DOMAIN: undefined,
1662    //    IBI: 'com.atlassian.JitsiMeet.ios',
1663    //    ISI: '1165103905'
1664    // },
1665
1666    /**
1667     * Specify mobile app scheme for opening the app from the mobile browser.
1668     */
1669    // APP_SCHEME: 'org.jitsi.meet',
1670
1671    /**
1672     * Specify the Android app package name.
1673     */
1674    // ANDROID_APP_PACKAGE: 'org.jitsi.meet',
1675
1676    /**
1677     * Override the behavior of some notifications to remain displayed until
1678     * explicitly dismissed through a user action. The value is how long, in
1679     * milliseconds, those notifications should remain displayed.
1680     */
1681    // ENFORCE_NOTIFICATION_AUTO_DISMISS_TIMEOUT: 15000,
1682
1683    // List of undocumented settings
1684    /**
1685     INDICATOR_FONT_SIZES
1686     PHONE_NUMBER_REGEX
1687    */
1688
1689    // -----------------DEPRECATED CONFIGS BELOW THIS LINE-----------------------------
1690
1691    // Connection indicators (
1692    // CONNECTION_INDICATOR_AUTO_HIDE_ENABLED,
1693    // CONNECTION_INDICATOR_AUTO_HIDE_TIMEOUT,
1694    // CONNECTION_INDICATOR_DISABLED) got moved to config.js.
1695
1696    // Please use disableModeratorIndicator from config.js
1697    // DISABLE_FOCUS_INDICATOR: false,
1698
1699    // Moved to config.js as `toolbarConfig.initialTimeout`.
1700    // INITIAL_TOOLBAR_TIMEOUT: 20000,
1701
1702    // Moved to config.js as `toolbarConfig.alwaysVisible`.
1703    // TOOLBAR_ALWAYS_VISIBLE: false,
1704
1705    // This config was moved to config.js as `toolbarButtons`.
1706    // TOOLBAR_BUTTONS: [],
1707
1708    // Moved to config.js as `toolbarConfig.timeout`.
1709    // TOOLBAR_TIMEOUT: 4000,
1710
1711    // Allow all above example options to include a trailing comma and
1712    // prevent fear when commenting out the last value.
1713    // eslint-disable-next-line sort-keys
1714    makeJsonParserHappy: 'even if last key had a trailing comma'
1715
1716    // No configuration value should follow this line.
1717};
1718
1719/* eslint-enable no-unused-vars, no-var, max-len */
1720</script>
1720
1721    
1721<script>/* eslint-disable no-unused-vars, no-var */
1722
1723// Logging configuration
1724var loggingConfig = {
1725    // default log level for the app and lib-jitsi-meet
1726    defaultLogLevel: 'trace',
1727
1728    // Option to disable LogCollector (which stores the logs on CallStats)
1729    // disableLogCollector: true,
1730
1731    // The following are too verbose in their logging with the
1732    // {@link #defaultLogLevel}:
1733    'modules/RTC/TraceablePeerConnection.js': 'info',
1734    'modules/statistics/CallStats.js': 'info',
1735    'modules/xmpp/strophe.util.js': 'log'
1736};
1737
1738/* eslint-enable no-unused-vars, no-var */
1739
1740// XXX Web/React server-includes logging_config.js into index.html.
1741// Mobile/react-native requires it in react/features/base/logging. For the
1742// purposes of the latter, (try to) export loggingConfig. The following
1743// detection of a module system is inspired by webpack.
1744typeof module === 'object'
1745    && typeof exports === 'object'
1746    && (module.exports = loggingConfig);
1747</script>
1747
1748    
1748<script src="libs/lib-jitsi-meet.min.js?v=5415"></script>
1748
1749    
1749<script src="libs/app.bundle.min.js?v=5415"></script>
1749
1750    <title>Jitsi Meet</title>
1751<meta property="og:title" content="Jitsi Meet"/>
1752<meta property="og:image" content="images/jitsilogo.png?v=1"/>
1753<meta property="og:description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/>
1754<meta description="Join a WebRTC video conference powered by the Jitsi Videobridge"/>
1755<meta itemprop="name" content="Jitsi Meet"/>
1756<meta itemprop="description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/>
1757<meta itemprop="image" content="images/jitsilogo.png?v=1"/>
1758<link rel="icon" type="image/png" href="images/favicon.ico?v=1"/>
1759
1760    
1761    <template id = "welcome-page-additional-content-template"></template>
1762
1763    <template id = "welcome-page-additional-card-template"></template>
1764
1765    <template id="settings-toolbar-additional-content-template"></template>
1766
1767  </head>
1768  <body>
1769    <noscript aria-hidden="true">
1770        <div>JavaScript is disabled. </br>For this site to work you have to enable JavaScript.</div>
1771    </noscript>
1772    
1773    <div id="react" role="main"></div>
1774  </body>
1775</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.