PlusEMU not connecting, Client stuck at 76%

WanknessHD

Hardcore Habboer
Jun 13, 2011
48
5
Alright as you've probably seen this asked for help many times, I still cannot fix it and I have no clue why.
I am using PlusEMU and RevCMS/Habbo Edit
I am making this server on localhost with xampp just to mess around.
My variables are all set to "localhost" I will post them.
the link to my swfs are localhost/swf/gordon/swf/habbo.swf
Link to externals are:
localhost/swf/gamedata/external_vars.txt
localhost/swf/gamedata/external_texts.txt
Here is the bottom part of my variables:
Code:
productdata.load.url=http://localhost/swf/gamedata/productdata/28ca6de1e4f08aa44dc986cc89ac61ab794e48ae
external.texts.txt=http://localhost/swf/gamedata/external_texts/28ca6de1e4f08aa44dc986cc89ac61ab794e48ae
external.override.variables.txt=http://localhost/swf/gamedata/override/external_override_variables/28ca6de1e4f08aa44dc986cc89ac61ab794e48ae
flash.client.url=//localhost/swf/gordon/swf/
furnidata.load.url=http://localhost/swf/gamedata/furnidata_xml/28ca6de1e4f08aa44dc986cc89ac61ab794e48ae
external.variables.txt=http://localhost/swf/gamedata/external_vars/28ca6de1e4f08aa44dc986cc89ac61ab794e48ae
external.override.texts.txt=http://localhost/swf/gamedata/override/external_flash_override_texts/28ca6de1e4f08aa44dc986cc89ac61ab794e48ae
external.figurepartlist.txt=http://localhost/swf/gamedata/figuredata/28ca6de1e4f08aa44dc986cc89ac61ab794e48ae

Here are my full variables:


Here is my client.php
Code:
    <script type="text/javascript">
       var habboName = "{username}";
       var habboReqPath = "{url}";
       var habboStaticFilePath = "http://images.habbo.com/habboweb/{web_build}/web-gallery";
       var habboImagerUrl = "http://www.habbo.com/habbo-imaging/";
       var habboPartner = "";
       var habboDefaultClientPopupUrl = "{url}/client";
       window.name = "ClientWndw";
       if (typeof HabboClient != "undefined") { HabboClient.windowName = "ClientWndw"; }
   </script>

<link rel="alternate" type="application/rss+xml" title="Habbo Hotel - RSS" href="http://www.habbo.com/articles/rss.xml" />
<script src="app/tpl/skins/{skin}/client/libs2.js" type="text/javascript"></script>
<script src="app/tpl/skins/{skin}/client/visual.js" type="text/javascript"></script>
<script src="app/tpl/skins/{skin}/client/libs.js" type="text/javascript"></script>
<script src="app/tpl/skins/{skin}/client/common.js" type="text/javascript"></script>
<link rel="stylesheet" href="http://images.habbo.com/habboweb/{web_build}/web-gallery/static/styles/common.css" type="text/css" />
<link rel="stylesheet" href="http://images.habbo.com/habboweb/{web_build}/web-gallery/static/styles/habboflashclient.css" type="text/css" />
<noscript>
    <meta http-equiv="refresh" content="0;url=/client/nojs" />
</noscript>
<link rel="stylesheet" href="app/tpl/skins/{skin}/client/client.css" type="text/css" />
<script src="app/tpl/skins/{skin}/client/habboflashclient.js" type="text/javascript"></script>

<script type="text/javascript">
    FlashExternalInterface.loginLogEnabled = false;
    FlashExternalInterface.logLoginStep("web.view.start");
   
    if (top == self) {
        FlashHabboClient.cacheCheck();
    }
    var flashvars = {
            "client.allow.cross.domain" : "0",
            "client.notify.cross.domain" : "1",
            "connection.info.host" : "{server_ip}",
            "connection.info.port" : "30000",
            "site.url" : "{url}/",
            "url.prefix" : "{url}/",
            "client.reload.url" : "{url}/client",
            "client.fatal.error.url" : "{url}/disconnected",
            "client.connection.failed.url" : "{url}/disconnected",
            "external.variables.txt" : "{external_vars}",
            "external.texts.txt" : "{external_texts}",
            "productdata.load.url" : "{product_data}",
            "furnidata.load.url" : "{furni_data}",
            "use.sso.ticket" : "1",
            "sso.ticket" : "{sso}",
            "processlog.enabled" : "0",
            "account_id" : "1",
            "client.starting" : "Please wait! {hotelName} is starting up",
            "flash.client.url" : "{swf_folder}/",
            "user.hash" : "31385693ae558a03d28fc720be6b41cb1ccfec02",
            "has.identity" : "0",
            "flash.client.origin" : "popup",
            "token" : "{sso}"
    };
    var params = {
        "base" : "{swf_folder}/",
        "allowScriptAccess" : "always",
        "menu" : "false"               
    };
   
    if (!(HabbletLoader.needsFlashKbWorkaround())) {
       params["wmode"] = "opaque";
    }
   
    var clientUrl = "{swf_folder}/Habbo.swf";

    swfobject.embedSWF(clientUrl, "flash-container", "100%", "100%", "10.0.0", "http://localhost/swf/gordon/swf/expressInstall.swf", flashvars, params);
    window.onbeforeunload = unloading;
    function unloading() {
        var clientObject;
        if (navigator.appName.indexOf("Microsoft") != -1) {
            clientObject = window["flash-container"];
        } else {
            clientObject = document["flash-container"];
        }
        try {
            clientObject.unloading();
        } catch (e) {}
    }
</script>

<body id="client" class="flashclient">
<div id="overlay"></div>
<img src="http://images.habbo.com/habboweb/{web_build}/web-gallery/v2/images/page_loader.gif" style="position:absolute; margin: -1500px;" />

<div id="overlay"></div>
<div id="client-ui" >
    <div id="flash-wrapper">
    <div id="flash-container">
        <div id="content" style="width: 400px; margin: 20px auto 0 auto; display: none">

<div class="cbb clearfix">
    <h2 class="title">Please update your Flash Player to the latest version.</h2>
    <div class="box-content">
            <p>You can install and download Adobe Flash Player here: <a href="http://get.adobe.com/flashplayer/">Install flash player</a>. More instructions for installation can be found here: <a href="http://www.adobe.com/products/flashplayer/productinfo/instructions/">More information</a></p>
            <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://images.habbo.com/habboweb/{web_build}/web-gallery/v2/images/client/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
    </div>
</div>

        </div>
        <script type="text/javascript">
            $('content').show();
        </script>
        <noscript>
            <div style="width: 400px; margin: 20px auto 0 auto; text-align: center">
                <p>If you are not automatically redirected, please <a href="/client/nojs">click here</a></p>
            </div>
        </noscript>
    </div>
    </div>
         
</div>
    <div style="display: none">

<div id="habboCountUpdateTarget">
{status}
</div>
   <script language="JavaScript" type="text/javascript">
       setTimeout(function() {
           HabboCounter.init(600);
       }, 20000);
   </script>
    </div>
    <script type="text/javascript">
        RightClick.init("flash-wrapper", "flash-container");
        if (window.opener && window.opener != window && typeof window.opener.location.href != "undefined") {
            window.opener.location.replace(window.opener.location.href);
        }
        $(document.body).addClassName("js");
           HabboClient.startPingListener();
    </script>

<script type="text/javascript">
    HabboView.run();
</script>

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-15697942-2']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

Here is my emu config
Code:
## uberEmulator System Configuration File
## Must be edited for the server to work

## MySQL Configuration
db.hostname=localhost
db.port=3306
db.username=root
db.password=admin
db.name=ass

## MySQL pooling setup (controls amount of connections)
db.pool.minsize=10
db.pool.maxsize=250

## Game TCP/IP Configuration
game.tcp.bindip=127.0.0.1
game.tcp.port=30000
game.tcp.conlimit=100000
game.tcp.conperip=2
game.tcp.enablenagles=true

## MUS TCP/IP Configuration
mus.tcp.bindip=127.0.0.1
mus.tcp.port=30001
mus.tcp.allowedaddr=localhost;127.0.0.1

## Client configuration
client.ping.enabled=1
client.ping.interval=20000
client.maxrequests=300

Everything (I think) is linked correctly and what not but when I run the /client it loads up to 76% and my EMU shows no sign of connection. My EMU runs perfectly but I don't get any connections. I have portforworded 30000/30001/80/3306. I have no clue why this is doing this. Any help would be appreciated.

My skype is apex.digital if you would like to add me to help.
 

ItsMeRomian

Member
Oct 3, 2015
190
22
Okay got it working but still stuck at 76% with no connections coming in.
I feel like it could be my ports because I followed this tut for my router and I went on my mobile and it couldnt connect to the IP:30000
Is canyouseeme.org seeing your service?(443) if not, you didn't portforwarded correctly and I cannot help you with that as it is diverent on every router.
 

Joshhh

Member
Apr 13, 2016
323
172
Code:
"external.variables.txt" : "{external_vars}",
            "external.texts.txt" : "{external_texts}",
            "productdata.load.url" : "{product_data}",
            "furnidata.load.url" : "{furni_data}",
In your client.php Change {external_texts} to {external_flash_texts} and {external_vars} to {external_variables}.
Also you should check in your console (Inspect element for any errors.), you also don't need to portforward any ports if your using your own computer and it's running on localhost / xampp.

In your external_variables make sure that everything is either set to //127.0.0.1 or //localhost
 

Joshhh

Member
Apr 13, 2016
323
172
If you using google chrome, in the top right corner under the 'x' should be 3 lines, click that, then more tools, then Inspect element. (Whilst on your client).
 
On the bottom of your external_variables, replace yours with these;
Code:
productdata.load.url=http://127.0.0.1/swf/gamedata/productdata.txt
external.texts.txt=http://127.0.0.1/swf/gamedata/external_flash_texts.txt
external.override.variables.txt=http://127.0.0.1/swf/gamedata/override/external_override_variables.txt
flash.client.url=//127.0.0.1/swf/gordon/PRODUCTION-201602082203-712976078/
furnidata.load.url=http://127.0.0.1/swf/gamedata/furnidata.xml
external.variables.txt=http://127.0.0.1/swf/gamedata/external_variables
external.override.texts.txt=http://127.0.0.1/swf/gamedata/override/external_flash_override_texts.txt
external.figurepartlist.txt=http://127.0.0.1/swf/gamedata/figuredata.xml
And change the 127.0.0.1 to your link which is (localhost), which is the same.
 

WanknessHD

Hardcore Habboer
Jun 13, 2011
48
5
I did lol and it still says {server_port}
But I inspected element on my client and these are the console errors I get..
 

WanknessHD

Hardcore Habboer
Jun 13, 2011
48
5
Code:
    <script type="text/javascript">
       var habboName = "{username}";
       var habboReqPath = "{url}";
       var habboStaticFilePath = "http://images.habbo.com/habboweb/{web_build}/web-gallery";
       var habboImagerUrl = "http://www.habbo.com/habbo-imaging/";
       var habboPartner = "";
       var habboDefaultClientPopupUrl = "{url}/client";
       window.name = "ClientWndw";
       if (typeof HabboClient != "undefined") { HabboClient.windowName = "ClientWndw"; }
   </script>

<link rel="alternate" type="application/rss+xml" title="Habbo Hotel - RSS" href="http://www.habbo.com/articles/rss.xml" />
<script src="app/tpl/skins/{skin}/client/libs2.js" type="text/javascript"></script>
<script src="app/tpl/skins/{skin}/client/visual.js" type="text/javascript"></script>
<script src="app/tpl/skins/{skin}/client/libs.js" type="text/javascript"></script>
<script src="app/tpl/skins/{skin}/client/common.js" type="text/javascript"></script>
<link rel="stylesheet" href="http://images.habbo.com/habboweb/{web_build}/web-gallery/static/styles/common.css" type="text/css" />
<link rel="stylesheet" href="http://images.habbo.com/habboweb/{web_build}/web-gallery/static/styles/habboflashclient.css" type="text/css" />
<noscript>
    <meta http-equiv="refresh" content="0;url=/client/nojs" />
</noscript>
<link rel="stylesheet" href="app/tpl/skins/{skin}/client/client.css" type="text/css" />
<script src="app/tpl/skins/{skin}/client/habboflashclient.js" type="text/javascript"></script>

<script type="text/javascript">
    FlashExternalInterface.loginLogEnabled = false;
    FlashExternalInterface.logLoginStep("web.view.start");
   
    if (top == self) {
        FlashHabboClient.cacheCheck();
    }
    var flashvars = {
            "client.allow.cross.domain" : "0",
            "client.notify.cross.domain" : "1",
            "connection.info.host" : "{server_ip}",
            "connection.info.port" : "30000",
            "site.url" : "{url}/",
            "url.prefix" : "{url}/",
            "client.reload.url" : "{url}/client",
            "client.fatal.error.url" : "{url}/disconnected",
            "client.connection.failed.url" : "{url}/disconnected",
            "external.variables.txt" : "{external_vars}",
            "external.texts.txt" : "{external_texts}",
            "productdata.load.url" : "{product_data}",
            "furnidata.load.url" : "{furni_data}",
            "use.sso.ticket" : "1",
            "sso.ticket" : "{sso}",
            "processlog.enabled" : "0",
            "account_id" : "1",
            "client.starting" : "Please wait! {hotelName} is starting up",
            "flash.client.url" : "{swf_folder}/",
            "user.hash" : "31385693ae558a03d28fc720be6b41cb1ccfec02",
            "has.identity" : "0",
            "flash.client.origin" : "popup",
            "token" : "{sso}"
    };
    var params = {
        "base" : "{swf_folder}/",
        "allowScriptAccess" : "always",
        "menu" : "false"               
    };
   
    if (!(HabbletLoader.needsFlashKbWorkaround())) {
       params["wmode"] = "opaque";
    }
   
    var clientUrl = "{swf_folder}/Habbo.swf";

    swfobject.embedSWF(clientUrl, "flash-container", "100%", "100%", "10.0.0", "http://localhost/swf/gordon/swf/expressInstall.swf", flashvars, params);
    window.onbeforeunload = unloading;
    function unloading() {
        var clientObject;
        if (navigator.appName.indexOf("Microsoft") != -1) {
            clientObject = window["flash-container"];
        } else {
            clientObject = document["flash-container"];
        }
        try {
            clientObject.unloading();
        } catch (e) {}
    }
</script>

<body id="client" class="flashclient">
<div id="overlay"></div>
<img src="http://images.habbo.com/habboweb/{web_build}/web-gallery/v2/images/page_loader.gif" style="position:absolute; margin: -1500px;" />

<div id="overlay"></div>
<div id="client-ui" >
    <div id="flash-wrapper">
    <div id="flash-container">
        <div id="content" style="width: 400px; margin: 20px auto 0 auto; display: none">

<div class="cbb clearfix">
    <h2 class="title">Please update your Flash Player to the latest version.</h2>
    <div class="box-content">
            <p>You can install and download Adobe Flash Player here: <a href="http://get.adobe.com/flashplayer/">Install flash player</a>. More instructions for installation can be found here: <a href="http://www.adobe.com/products/flashplayer/productinfo/instructions/">More information</a></p>
            <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://images.habbo.com/habboweb/{web_build}/web-gallery/v2/images/client/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
    </div>
</div>

        </div>
        <script type="text/javascript">
            $('content').show();
        </script>
        <noscript>
            <div style="width: 400px; margin: 20px auto 0 auto; text-align: center">
                <p>If you are not automatically redirected, please <a href="/client/nojs">click here</a></p>
            </div>
        </noscript>
    </div>
    </div>
         
</div>
    <div style="display: none">

<div id="habboCountUpdateTarget">
{status}
</div>
   <script language="JavaScript" type="text/javascript">
       setTimeout(function() {
           HabboCounter.init(600);
       }, 20000);
   </script>
    </div>
    <script type="text/javascript">
        RightClick.init("flash-wrapper", "flash-container");
        if (window.opener && window.opener != window && typeof window.opener.location.href != "undefined") {
            window.opener.location.replace(window.opener.location.href);
        }
        $(document.body).addClassName("js");
           HabboClient.startPingListener();
    </script>

<script type="text/javascript">
    HabboView.run();
</script>

<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-15697942-2']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

Code:
<?php
if(!defined('IN_INDEX')) { die('Sorry, you cannot access this file.'); }
#Please fill this all out.

#NOTE: To set up TheHabbos.ORG's API go to wwwroot/mysite/thehabbos_api for IIS, OR, htdocs/thehabbos_api for XAMPP and others.

/*
*
*	MySQL management
*
*/

$_CONFIG['mysql']['connection_type'] = 'pconnect'; //Type of connection: It must be connect, or pconnect: if you want a persistent connection.

$_CONFIG['mysql']['hostname'] = 'localhost'; //MySQL host

$_CONFIG['mysql']['username'] = 'root'; //MySQL username

$_CONFIG['mysql']['password'] = 'admin'; //MySQL password

$_CONFIG['mysql']['database'] = 'ass'; //MySQL database

$_CONFIG['mysql']['port'] = '3306'; //MySQL's port

/*
*
*	Hotel management  - All URLs do not end with an "/"
*
*/

$_CONFIG['hotel']['server_ip'] = '127.0.0.1'; //IP of VPS/DEDI/etc

$_CONFIG['hotel']['url'] = 'http://localhost'; //Does not end with a "/"

$_CONFIG['hotel']['name'] = 'Lobbo'; // Hotel's name

$_CONFIG['hotel']['desc'] = 'Best hotel around!'; //Hotel's description 

$_CONFIG['hotel']['email'] = '[email protected]'; //Where the help queries from users are emailed to.@Priv skin

$_CONFIG['hotel']['in_maint'] = false; //False if hotel is NOT in maintenance. True if hotel IS in maintenance

$_CONFIG['hotel']['motto'] = 'I <3 ' . $_CONFIG['hotel']['name']; //Default motto users will register with.

$_CONFIG['hotel']['credits'] = 5000; //Default number of credits users will register with.

$_CONFIG['hotel']['pixels'] = 10000; //Default number of pixels users will register with.

$_CONFIG['hotel']['figure'] = '-'; //Default figure users will register with.

$_CONFIG['hotel']['web_build'] = '63_1dc60c6d6ea6e089c6893ab4e0541ee0/1633'; //Web_Build

$_CONFIG['hotel']['external_vars'] = 'http://localhost/swf/gamedata/external_variables.txt'; //URL to your external vars

$_CONFIG['hotel']['external_texts'] = 'http://localhost/swf/gamedata/external_flash_texts.txt'; //URL to your external texts

$_CONFIG['hotel']['product_data'] = 'http://localhost/swf/gamedata/productdata.txt'; //URL to your productdata

$_CONFIG['hotel']['furni_data'] = 'http://localhost/swf/gamedata/furnidata.xml'; //URL to your furnidata

$_CONFIG['hotel']['swf_folder'] = 'http://localhost/swf/gordon/PRODUCTION-201602082203-712976078'; //URL to your SWF folder(does not end with a '/')

/*
*
*	Templating management - Pick one of our default styles or make yours by following our examples!
*
*/

#RevCMS has 2 default styles, 'Mango' by dannyy94 and 'Priv' by joopie - Others styles are to come, such as RastaLulz's ProCMS style and Nominal's PhoenixCMS 4.0 style.

$_CONFIG['template']['style'] = 'Habbo'; 

/*
*
*	Other topsites.. thing
*
*/

$_CONFIG['thehabbos']['username'] = 'Kryptos';
$_CONFIG['retro_top']['user'] = 'Kryptos'; 

/*
*
*	Recaptcha management - Fill the information below if you have one, else leave it like that and don't worry, be happy.
*
*/

$_CONFIG['recaptcha']['priv_key'] = '6LcZ58USAAAAABSV5px9XZlzvIPaBOGA6rQP2G43';
$_CONFIG['recaptcha']['pub_key'] = '6LcZ58USAAAAAAQ6kquItHl4JuTBWs-5cSKzh6DD';


/*
*
*	Social Networking stuff
*
*/

$_CONFIG['social']['twitter'] = 'TwitterAccount'; //Hotel's Twitter account

$_CONFIG['social']['facebook'] = 'FacebookAccount'; //Hotel's Facebook account

?>
 
And from this scrn you can see I linked them correctly.

 
Why in my client.php the port is 30000 but when i source check client.php the port says {server_port} ??
 

Joshhh

Member
Apr 13, 2016
323
172
Try this client.php;
Code:
<html lang="en">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <title>{hotelName}: Client</title>
       
        <link rel="stylesheet" href="http://localhost/app/tpl/skins/{skin}/styles/client.css" type="text/css">
   
   
       
        <script type="text/javascript" src="http://localhost/app/tpl/skins/{skin}/js/swfobject.js"></script>
        <script type="text/javascript">
    FlashExternalInterface.loginLogEnabled = false;
    FlashExternalInterface.logLoginStep("web.view.start");
 
    if (top == self) {
        FlashHabboClient.cacheCheck();
    }
    var flashvars = {
            "client.allow.cross.domain" : "0",
            "client.notify.cross.domain" : "1",
            "connection.info.host" : "127.0.0.1",
            "connection.info.port" : "30000",
            "site.url" : "{url}/",
            "url.prefix" : "{url}/",
            "client.reload.url" : "{url}/client",
            "client.fatal.error.url" : "{url}/disconnected",
            "client.connection.failed.url" : "{url}/disconnected",
            "external.variables.txt" : "http://localhost/swf/gamedata/external_variables.txt",
                "external.texts.txt" : "http://localhost/swf/gamedata/external_flash_texts.txt",
                "external.figurepartlist.txt" : "http://localhost/swf/gamedata/figuredata.xml",
                "external.override.texts.txt" : "http://localhost/swf/gamedata/override/external_flash_override_texts.txt",
                "external.override.variables.txt" : "http://localhost/swf/gamedata/override/external_override_variables.txt",
                "productdata.load.url" : "http://localhost/swf/gamedata/productdata.txt",
                "furnidata.load.url" : "http://localhost/swf/gamedata/furnidata.xml",
            "use.sso.ticket" : "1",
            "sso.ticket" : "{sso}",
            "processlog.enabled" : "0",
            "account_id" : "1",
            "client.starting" : "Please wait! {hotelName} is starting up",
            "flash.client.url" : "http://localhost/swf/gordon/PRODUCTION-201602082203-712976078/",
            "user.hash" : "31385693ae558a03d28fc720be6b41cb1ccfec02",
            "has.identity" : "0",
            "flash.client.origin" : "popup",
            "token" : "{sso}"
    };
   var params =
            {
                "base" : BaseUrl + "/",
                "allowScriptAccess" : "always",
                "menu" : "false"              
            };
            swfobject.embedSWF(BaseUrl + "/Habbo.swf", "client", "100%", "100%", "10.0.0", "http://localhost/swf/gordon/PRODUCTION-201602082203-712976078/expressInstall.swf", flashvars, params, null);
          </script>    
</style>
    </head>
    <body id="client" class="flashclient">
</head>

Also on your config.php change;
Code:
$_CONFIG['hotel']['swf_folder'] = 'http://localhost/swf/gordon/PRODUCTION-201602082203-712976078';
with
Code:
$_CONFIG['hotel']['swf_folder'] = 'http://localhost/swf/gordon/PRODUCTION-201602082203-712976078/';
and try that.
 

WanknessHD

Hardcore Habboer
Jun 13, 2011
48
5
Done, and its still stuck at 76% with no connections coming in, in the emu.
 
Also my external override vars is an empty text file if that matters.
 
Okay scratch that I accidentally put that client in a different skin, so I put it in the right area and now my client is just white.
 

Users who are viewing this thread

Top