hmLoadTopic({
hmKeywords:"STUN Server,TURN Server,Web Conference Server,Web Conferening",
hmTitle:"Web Conference Server",
hmDescription:"The Web Conference Server configuration page is only available in MDaemon\'s Remote Administration (MDRA) web interface.",
hmPrevLink:"wa--https.html",
hmNextLink:"terms_of_use.html",
hmParentLink:"index.html",
hmBreadCrumbs:"Setup Menu &gt; Web &amp; IM Services",
hmTitlePath:"Setup Menu > Web & IM Services > Web Conference Server",
hmHeader:"<h1 class=\"p_Heading1\" style=\"page-break-after: avoid;\"><span class=\"f_Heading1\">Web Conference Server<\/span><\/h1>\n\r",
hmBody:"<div style=\"text-align: left; text-indent: 0; padding: 0 0 0 0; margin: 0 3.0625rem 0.8750rem 3.0000rem;\"><table style=\"background-color:#ffffe6; border:solid thin #000000; border-spacing:0;\">\n\r<tr>\n\r<td style=\"vertical-align:top; width:3.1250rem; height:3.1250rem; padding:0.3125rem; border:none\"><p class=\"p_NoFormat\"><img style=\"margin:0;width:3.1250rem;height:3.1250rem;border:none\" src=\".\/images\/lightbulb_on_50_yback.gif\"\/><\/p>\n\r<\/td>\n\r<td style=\"vertical-align:top; width:52.1875rem; padding:0.3125rem; border:none\"><p class=\"p_Notes\"><span class=\"f_Notes\">The Web Conference Server configuration page is only available in MDaemon\'s <a href=\"webadmin_web-config.html\" class=\"topiclink\">Remote Administration<\/a> (MDRA) web interface.<\/span><\/p>\n\r<\/td>\n\r<\/tr>\n\r<\/table>\n\r<\/div>\n\r<p class=\"p_BodyText\"><span class=\"f_BodyText\">MDaemon is equipped with a Web Conferencing server, which can provide audio and video communication between your Webmail users, along with a host of web conferencing features. To use Web Conferencing, users must be signed in to Webmail using HTTPS (Web Conferencing applies MDaemon\'s <a href=\"ssl_mdaemon.html\" class=\"topiclink\">SSL\/TLS certificate<\/a> at startup), and using the Pro theme. They can then access this feature from the <\/span><span class=\"f_BodyText\" style=\"font-weight: bold;\">Web Conference<\/span><span class=\"f_BodyText\"> icon on the Pro theme toolbar. Webmail\'s Web Conference feature includes: video and audio conferences, screen sharing, text chat, presenter and moderator tools, conference scheduling and invites, password protected conferences, and more.<\/span><\/p>\n\r<h2 class=\"p_Heading2\" style=\"page-break-after: avoid;\"><span class=\"f_Heading2\">How Web Conferencing Works<\/span><\/h2>\n\r<p class=\"p_BodyText\"><span class=\"f_BodyText\">MDaemon\'s Web Conferencing feature is a closed system, meaning that all of the communication data is managed by your MDaemon. No communication data is sent to the cloud, unless you choose to use an external TURN server (see below) to accommodate a restrictive firewall environment.<\/span><\/p>\n\r<p class=\"p_BodyText\"><span class=\"f_BodyText\">MDaemon\'s Web Conferencing is comprised of two systems, the Web Real-Time Communication (<\/span><span class=\"f_BodyText\" style=\"font-weight: bold;\">WebRTC<\/span><span class=\"f_BodyText\">) signaling server that uses <\/span><span class=\"f_BodyText\" style=\"font-weight: bold;\">Socket.IO<\/span><span class=\"f_BodyText\"> to connect users, and a Selective Forwarding Unit (<\/span><span class=\"f_BodyText\" style=\"font-weight: bold;\">SFU<\/span><span class=\"f_BodyText\">) that uses <\/span><span class=\"f_BodyText\" style=\"font-weight: bold;\"><a href=\"https:\/\/mediasoup.org\/\" target=\"_blank\" class=\"weblink\">mediasoup<\/a><\/span><span class=\"f_BodyText\"> to connect audio and video using Session Traversal Utilities for NAT (<\/span><span class=\"f_BodyText\" style=\"font-weight: bold;\">STUN<\/span><span class=\"f_BodyText\">).<\/span><\/p>\n\r<p class=\"p_BodyText\"><span class=\"f_BodyText\">A Traversal Using Relays around NAT (<\/span><span class=\"f_BodyText\" style=\"font-weight: bold;\">TURN<\/span><span class=\"f_BodyText\">) server is not included. A TURN server provides fall back capabilities when STUN facilitated peer to peer connections fail. This is most likely to occur in environments with restrictive or multiple firewalls. Some sources say that about 10% of WebRTC connections online are unable to connect without the use of a TURN server. If your particular environment requires this, a third-party TURN server can be implemented.<\/span><\/p>\n\r<p class=\"p_BodyText\"><span class=\"f_BodyText\">When set up properly, your Webmail users should be able to sign in using the Pro theme and then start audio and video conference sessions with other users belonging to the same domain. You can optionally allow users to join conferences with users of other domains, as long as those domains are also hosted on the same MDaemon server.<\/span><\/p>\n\r<h2 class=\"p_Heading2\" style=\"page-break-after: avoid;\"><span class=\"f_Heading2\">Configuring Web Conferencing<\/span><\/h2>\n\r<p class=\"p_BodyText\"><span class=\"f_BodyText\">The configuration page for Web Conferencing can be found in MDaemon Remote Administration at <\/span><span class=\"f_BodyText\" style=\"font-weight: bold;\">Main | Web Conference Server<\/span><span class=\"f_BodyText\">.<\/span><\/p>\n\r<h3 class=\"p_Heading3\" style=\"page-break-after: avoid;\"><span class=\"f_Heading3\">Configuration Settings<\/span><\/h3>\n\r<p class=\"p_BodyText\"><span class=\"f_ControlIndent\">MDaemon will restart the Web Conference Server whenever you make any changes to the Configuration Settings.<\/span><\/p>\n\r<p class=\"p_ControlHeading\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading\">Enable Web Conference Server<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">Check this box to enable the Web Conference Server.<\/span><\/p>\n\r<p class=\"p_ControlHeading2\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading2\">Maximum conference room members<\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_ControlIndent2\">This is the maximum number of members that may be in a conference room. You can set this option to 2-60 members, but 20 is the default value and recommended maximum.<\/span><\/p>\n\r<p class=\"p_ControlHeading2\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading2\">Primary Port<\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_ControlIndent2\">This is the TCP port used by Socket.IO for signaling and conference room chat. The default value is TCP port 3443.<\/span><\/p>\n\r<p class=\"p_ControlHeading\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading\">STUN Server IPs<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">This is the list of IPs where your server can be found either inside the network or from the Internet. These IPs and the STUN Server Ports will be utilized together to create audio, video, and screen sharing connections between users in a conference room. You may set a maximum of four IP addresses. Remember that if you wish to allow members to join conferences from both inside and outside your local network, you may need to include both a local and public IP address here. <\/span><\/p>\n\r<p class=\"p_ControlHeading\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading\">STUN Server Ports<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">This is the port range allowed for the STUN server workers (in this case, &quot;worker&quot; refers to a server-side process that handles client connections and traffic; it doesn\'t mean a person or user). The STUN server can start one worker per processor core, and each worker will use one port per IP address specified. It will listen on one port for TCP and UDP traffic. TCP and UDP inbound connectivity is required.<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">To determine the size of the needed port range, multiply the number of IP addresses by the number of CPU cores (i.e. 2 IP Addresses X 4 Cores = 8 ports).<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\" style=\"font-weight: bold;\">Note:<\/span><span class=\"f_ControlIndent\"> Since an IPv4 and IPv6 address can bind to the same port, using both reduces the number of cores needed. For example, three IPv4 addresses and one IPv6 address only need three ports per core rather than four.<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">The default <\/span><span class=\"f_ControlIndent\" style=\"font-weight: bold;\">Minimum Port<\/span><span class=\"f_ControlIndent\"> value is 10000. The default <\/span><span class=\"f_ControlIndent\" style=\"font-weight: bold;\">Maximum Port<\/span><span class=\"f_ControlIndent\"> value is 11000. Using the above &quot;8 port&quot; example, these values could be set to &quot;Minimum Port: 10000&quot; and &quot;Maximum Port: 10007&quot;.<\/span><\/p>\n\r<p class=\"p_ControlHeading\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading\">Log level<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">Five levels of logging are supported, from the highest to lowest amount of data logged:<\/span><\/p>\n\r<div style=\"text-align: left; text-indent: 0; padding: 0 0 0 0; margin: 0 0.3125rem 0.8750rem 2.6250rem;\"><table style=\"width:40.6250rem; border:none; border-spacing:0.1250rem;\">\n\r<tr>\n\r<td style=\"vertical-align:top; width:8.5625rem; padding:0.0625rem; border:none\"><p class=\"p_BodyText\" style=\"text-align: right;\"><span class=\"f_BodyText\" style=\"font-weight: bold;\">Debug<\/span><\/p>\n\r<\/td>\n\r<td style=\"vertical-align:top; width:31.5000rem; padding:0.0625rem; border:none\"><p class=\"p_BodyText\"><span class=\"f_BodyText\">This is the most extensive log level. Logs all available entries, and is typically only used when diagnosing a problem, or when the administrator wants detailed information.<\/span><\/p>\n\r<\/td>\n\r<\/tr>\n\r<tr>\n\r<td style=\"vertical-align:top; width:8.5625rem; padding:0.0625rem; border:none\"><p class=\"p_BodyText\" style=\"text-align: right;\"><span class=\"f_BodyText\" style=\"font-weight: bold;\">Informational<\/span><\/p>\n\r<\/td>\n\r<td style=\"vertical-align:top; width:31.5000rem; padding:0.0625rem; border:none\"><p class=\"p_BodyText\"><span class=\"f_BodyText\">Moderate logging. Logs general operations without details. This is the default log level.<\/span><\/p>\n\r<\/td>\n\r<\/tr>\n\r<tr>\n\r<td style=\"vertical-align:top; width:8.5625rem; padding:0.0625rem; border:none\"><p class=\"p_BodyText\" style=\"text-align: right;\"><span class=\"f_BodyText\" style=\"font-weight: bold;\">Warning<\/span><\/p>\n\r<\/td>\n\r<td style=\"vertical-align:top; width:31.5000rem; padding:0.0625rem; border:none\"><p class=\"p_BodyText\"><span class=\"f_BodyText\">Warnings, errors, critical errors, and startup\/shutdown events are logged.<\/span><\/p>\n\r<\/td>\n\r<\/tr>\n\r<tr>\n\r<td style=\"vertical-align:top; width:8.5625rem; padding:0.0625rem; border:none\"><p class=\"p_BodyText\" style=\"text-align: right;\"><span class=\"f_BodyText\" style=\"font-weight: bold;\">Error<\/span><\/p>\n\r<\/td>\n\r<td style=\"vertical-align:top; width:31.5000rem; padding:0.0625rem; border:none\"><p class=\"p_BodyText\"><span class=\"f_BodyText\">Errors, critical errors, and startup\/shutdown events are logged.<\/span><\/p>\n\r<\/td>\n\r<\/tr>\n\r<tr>\n\r<td style=\"vertical-align:top; width:8.5625rem; padding:0.0625rem; border:none\"><p class=\"p_BodyText\" style=\"text-align: right;\"><span class=\"f_BodyText\" style=\"font-weight: bold;\">Critical<\/span><\/p>\n\r<\/td>\n\r<td style=\"vertical-align:top; width:31.5000rem; padding:0.0625rem; border:none\"><p class=\"p_BodyText\"><span class=\"f_BodyText\">Critical errors and startup\/shutdown events are logged.<\/span><\/p>\n\r<\/td>\n\r<\/tr>\n\r<\/table>\n\r<\/div>\n\r<p class=\"p_CenteredHLine\" style=\"border-right: none; border-bottom: none; border-left: none;\"><span class=\"f_CenteredHLine\">&nbsp;<\/span><\/p>\n\r<h3 class=\"p_Heading3\" style=\"page-break-after: avoid;\"><span class=\"f_Heading3\">User Settings<\/span><\/h3>\n\r<p class=\"p_ControlHeading\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading\">Include all domains in the user buddy list<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">By default, Webmail\'s Web Conference page only lists contacts belonging to the same MDaemon domain as the user, for joining or inviting to conferences. Click this box if you wish to allow users to see the users belonging to other local MDaemon domains as well.<\/span><\/p>\n\r<p class=\"p_ControlHeading\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading\">Users retain this many days of conference history: [xx]<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">This is the number of days of conference history that will be saved and available to the user on their Web Conference page. Note: Video and audio are not recorded and saved.<\/span><\/p>\n\r<p class=\"p_CenteredHLine\" style=\"border-right: none; border-bottom: none; border-left: none;\"><span class=\"f_CenteredHLine\">&nbsp;<\/span><\/p>\n\r<h3 class=\"p_Heading3\" style=\"page-break-after: avoid;\"><span class=\"f_Heading3\">TURN Configuration<\/span><\/h3>\n\r<p class=\"p_BodyText\"><span class=\"f_BodyText\">While STUN helps establish peer-to-peer connections, it does not cover all use cases. TURN relays media through a publicly reachable server, ensuring communication is possible even in the most restrictive network environments. If your particular network environment or firewall restrictions will cause direct peer-to-peer WebRTC connections to fail, you can use this section to configure a third-party or custom TURN server solution. While many third-party TURN servers are fee based, there are also open-source TURN servers available that you can configure and run in your own environment.<\/span><\/p>\n\r<p class=\"p_ControlHeading\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading\">Choose a TURN service provider<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">Use the drop-down list to choose your TURN service provider.<\/span><\/p>\n\r<p class=\"p_ControlHeading2\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading2\">None<\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_ControlIndent2\">This option is selected by default, because in most cases a TURN server isn\'t needed.<\/span><\/p>\n\r<p class=\"p_ControlHeading2\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading2\">Metered \/ Twilio \/ Xirsys<\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_ControlIndent2\">Metered, Twilio, and Xirsys are third-party TURN service providers. Different configuration options will appear when you select one of these services, so that you can enter the required authentication data provided by your service.<\/span><\/p>\n\r<p class=\"p_ControlHeading2\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading2\">Custom<\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_ControlIndent2\">Choose this option to configure a TURN service API manually (see <a href=\"web-conference-server.html#custom-turn-configuration\" class=\"topiclink\">Custom TURN Configuration Options<\/a> below).<\/span><\/p>\n\r<p class=\"p_ControlHeading\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading\">Test TURN Configuration<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">Click this button to test and verify your TURN server\'s configuration.<\/span><\/p>\n\r<p class=\"p_CenteredHLine\" style=\"border-right: none; border-bottom: none; border-left: none;\"><span class=\"f_CenteredHLine\">&nbsp;<\/span><\/p>\n\r<p class=\"p_DialogSectionHeading\" style=\"page-break-after: avoid;\"><a id=\"custom-turn-configuration\" class=\"hmanchor\"><\/a><span class=\"f_DialogSectionHeading\">Custom TURN Configuration Options<\/span><\/p>\n\r<p class=\"p_BodyText\"><span class=\"f_BodyText\">The following custom configuration options should allow for almost any provider that returns server urls from one request, but these are advanced options that may require prior knowledge of TURN service systems.<\/span><\/p>\n\r<p class=\"p_ControlHeading\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading\">Provider URL Template<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">This is the API endpoint from which TURN server credentials and URLs are retrieved. You may use custom variables like <\/span><span class=\"f_PlainText\">\${VARIABLE_NAME}<\/span><span class=\"f_ControlIndent\"> that can be set under URL Variables.<\/span><\/p>\n\r<p class=\"p_ControlHeading\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading\">URL Variables<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">Define variables that will be substituted into the Provider URL Template.<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">Example:<\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_ControlIndent2\">Name: <\/span><span class=\"f_PlainText\">channel<\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_ControlIndent2\">Value: <\/span><span class=\"f_PlainText\">my_conference_room<\/span><\/p>\n\r<p class=\"p_ControlHeading\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading\">Provider HTTP Request Method<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">Specifies how the TURN credentials should be requested from the provider: GET, POST, PUT, or PATCH<\/span><\/p>\n\r<p class=\"p_ControlHeading\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading\">HTTP Headers<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">This is for adding any necessary custom headers required by your TURN provider API.<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">Examples:<\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_PlainText\">Authorization: Basic &lt;base64-encoded-credentials&gt;<\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_PlainText\">Content-Type: application\/json<\/span><\/p>\n\r<p class=\"p_ControlHeading\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading\">Provider Authentication Type<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">This is the authentication type required by your provider. Different options will appear based on the authentication type selected: Basic, Bearer, or Custom Auth Header.<\/span><\/p>\n\r<p class=\"p_ControlHeading2\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading2\">Basic Authentication<\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_ControlIndent2\">Username and Password are required.<\/span><\/p>\n\r<p class=\"p_ControlHeading2\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading2\">Bearer <\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_ControlIndent2\">Enter the token in the Auth Token field.<\/span><\/p>\n\r<p class=\"p_ControlHeading2\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading2\">Custom Header<\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_ControlIndent2\">Enter the Auth Header Name and the Auth Header Value<\/span><\/p>\n\r<p class=\"p_ControlHeading\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading\">Response Parsing Configuration<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">To correctly extract TURN server details from the provider\'s JSON API response, specify the appropriate JSON paths for the following elements:<\/span><\/p>\n\r<p class=\"p_ControlHeading2\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading2\">URLs JSON Response Path<\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_ControlIndent2\">Specifies where the list of TURN server URLs is located in the API response.<\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_ControlIndent2\">Examples:<\/span><\/p>\n\r<p class=\"p_ControlIndent3\"><span class=\"f_PlainText\">data[0].urls<\/span><\/p>\n\r<p class=\"p_ControlIndent3\"><span class=\"f_PlainText\">data.iceServers[].urls<\/span><\/p>\n\r<p class=\"p_ControlIndent3\"><span class=\"f_PlainText\">v.iceServers.urls[]<\/span><\/p>\n\r<p class=\"p_ControlHeading2\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading2\">Username JSON Response Path<\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_ControlIndent2\">Path to the username returned by the TURN provider.<\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_ControlIndent2\">Examples:<\/span><\/p>\n\r<p class=\"p_ControlIndent3\"><span class=\"f_PlainText\">data[0].username<\/span><\/p>\n\r<p class=\"p_ControlIndent3\"><span class=\"f_PlainText\">data.username<\/span><\/p>\n\r<p class=\"p_ControlIndent3\"><span class=\"f_PlainText\">v.iceServers.username<\/span><\/p>\n\r<p class=\"p_ControlHeading2\" style=\"page-break-after: avoid;\"><span class=\"f_ControlHeading2\">Credential JSON Response Path<\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_ControlIndent2\">Path to the password or credential used for TURN authentication.<\/span><\/p>\n\r<p class=\"p_ControlIndent2\"><span class=\"f_ControlIndent2\">Examples:<\/span><\/p>\n\r<p class=\"p_ControlIndent3\"><span class=\"f_PlainText\">data[0].credential<\/span><\/p>\n\r<p class=\"p_ControlIndent3\"><span class=\"f_PlainText\">data.credential<\/span><\/p>\n\r<p class=\"p_ControlIndent3\"><span class=\"f_PlainText\">v.iceServers.credential<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\" style=\"font-weight: bold;\">NOTE:<\/span><span class=\"f_ControlIndent\"> These paths must follow dot-notation syntax used in JavaScript for navigating JSON objects (e.g. <\/span><span class=\"f_PlainText\">data[0].urls<\/span><span class=\"f_ControlIndent\">). Ensure your provider\'s response matches the expected structure.<\/span><\/p>\n\r<p class=\"p_ControlIndent\"><span class=\"f_ControlIndent\">&nbsp;<\/span><\/p>\n\r"
})
