Threshold

Connection Banner:

. ' . /\\ . \| . /\\ !_\\/ ' \| ' \\/_! !_/I_\|\| . ' \\'/ ' . \|\|_I\\_! /\\ /I_/\| \|\| -== + ==- \|\| \|\\_I\\ /\\ /_ \\ !//\| \| \|\| ' . /.\\ . ' \|\| \| \|\\\\! /_ \\ (- ) /I/ \| \| \|\| . \| . \|\| \| \| \\I\\ (= ) \\__/!//\| \| \| \|\| ' \| ' \|\| \| \| \|\\\\!\\__/ / \\I/ \| \| \| \|\| ' . ' \|\| \| \| \| \\I/ \\ {_ __} \| \| \| \|\| \|\| \| \| \| {_​___} _!__\|= \|\| \| \| \| \|\| \|\| \| \| \| \|\| \|__!_ _I__\| \|\|__\|__\|__\|_\|\| Welcome to \|\|_\|__\|__\|__\|\|- \|__I_ -\|--\|- \|\|--\|--\|--\|-\|\| \|\|-\|--\|--\|--\|\|= \|--\|- \| \| \|\| \| \| \| \|\| \|\| \| \| \| \|\| \| \| \| \|= \|\| \| \| \| \|\| T H R E S H O L D \|\| \| \| \| \|\|= \| \| \| \|- \|\| \| \| \| \|\| \|\| \| \| \| \|\|= \| \| \| \|- \|\| \| \| \| \|\| \|\| \| \| \| \|\|- \| \| _\|__\| \|\|__\|__\|__\|_\|\|:::::::::::::::::::::\|\|_\|__\|__\|__\|\| \|__\|_ -\|--\|= \|\|--\|--\|--\|-\|\|:::::::::::::::::::::\|\|-\|--\|--\|--\|\|- \|--\|- \|- \|\| \| \| \| \|\|:::::::::::::::::::::\|\| \| \| \| \|\|= \| \| ~​~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~ This system is for the use of authorized users and legitimate new users only. Threshold is a live performance, text roleplaying game. Acceptable usage of this computer system is ONLY to play Threshold RPG. Inappropriate or unlawful use of this computer system will be reported to the appropriate authorities. [If you already have a character on Threshold, enter your character name now. ] [If you want to create a character, type "new" at the prompt (without quotes).] Who dares cross this Threshold? It is imperative that you speak your name, adventurer. [If you already have a character on Threshold, enter your character name now. ] [If you want to create a character, type "new" at the prompt (without quotes).] Who dares cross this Threshold?

Server URLs

Server Info

  • Codebase: Custom

  • Genre: Fantasy

  • Gameplay: Adventure

  • Players online: 133 [1]

  • Uptime: 33 days

  • Created: 1996

  • Status: Live

  • Discord: https://discord.gg/0rDwGcIiYEueqon1

  • Server Location: 🇺🇸 US (MSSP)

  • Language: English

  • Pay for Perks: $ Yes

Protocol Support

MUD-specific protocols detected via MSSP flags or Telnet negotiation.

  • MSSP: Yes (MSSP)

  • GMCP: Yes (MSSP)

  • MSDP: Negotiated

  • MCCP: Yes (MSSP)

  • MCCP2: Negotiated

  • MXP: Yes (MSSP)

  • MSP: Negotiated

  • MCP: No

  • ZMP: Negotiated

Telnet Fingerprint

3962dbc65d7d0ef2

This fingerprint is shared by 1 other server.

Options offered by server: BINARY, CHARSET, ECHO, GMCP, MCCP2, MSDP, MSP, MSSP, ZMP

Options requested from client: GMCP, MCCP2, MSDP, MSP, MSSP, MXP, NAWS, NEW_ENVIRON, TTYPE, ZMP

The complete JSON record collected during the scan, including Telnet negotiation results and any MSSP metadata.

Show JSON
{
  "server-probe": {
    "fingerprint": "3962dbc65d7d0ef2",
    "fingerprint-data": {
      "offered-options": [
        "BINARY",
        "CHARSET",
        "ECHO",
        "GMCP",
        "MCCP2",
        "MSDP",
        "MSP",
        "MSSP",
        "ZMP"
      ],
      "probed-protocol": "server",
      "refused-options": [
        "AARDWOLF",
        "ATCP",
        "COM_PORT",
        "EOR",
        "MCCP3",
        "MXP",
        "SGA",
        "STATUS"
      ],
      "requested-options": [
        "GMCP",
        "MCCP2",
        "MSDP",
        "MSP",
        "MSSP",
        "MXP",
        "NAWS",
        "NEW_ENVIRON",
        "TTYPE",
        "ZMP"
      ],
      "scan-type": "quick"
    },
    "session_data": {
      "banner_after_return": "\r\nIt is imperative that you speak your name, adventurer.\r\n\r\n[If you already have a character on Threshold, enter your character name now. ]\r\n[If you want to create a character, type \"new\" at the prompt (without quotes).]\r\n\r\nWho dares cross this Threshold? ",
      "banner_before_return": "                              .  '  .\r\n                     /\\    .     |     .    /\\\r\n                   !_\\/       '  |  '       \\/_!\r\n                !_/I_||  .  '   \\'/   '  .  ||_I\\_!       \r\n       /\\      /I_/| ||      -== + ==-      || |\\_I\\      /\\\r\n      /_ \\   !//|  | ||  '  .   /.\\   .  '  || |  |\\\\!   /_ \\\r\n     (-   ) /I/ |  | ||       .  |  .       || |  | \\I\\ (=   )\r\n      \\__/!//|  |  | ||    '     |     '    || |  |  |\\\\!\\__/\r\n      /  \\I/ |  |  | ||       '  .  '       || |  |  | \\I/  \\\r\n     {_ __}  |  |  | ||                     || |  |  |  {____}\r\n  _!__|= ||  |  |  | ||                     || |  |  |  ||  |__!_\r\n  _I__|  ||__|__|__|_||     Welcome to      ||_|__|__|__||- |__I_\r\n  -|--|- ||--|--|--|-||                     ||-|--|--|--||= |--|-\r\n   |  |  ||  |  |  | ||                     || |  |  |  ||  |  |\r\n   |  |= ||  |  |  | ||  T H R E S H O L D  || |  |  |  ||= |  |\r\n   |  |- ||  |  |  | ||                     || |  |  |  ||= |  |\r\n   |  |- ||  |  |  | ||                     || |  |  |  ||- |  | \r\n  _|__|  ||__|__|__|_||:::::::::::::::::::::||_|__|__|__||  |__|_\r\n  -|--|= ||--|--|--|-||:::::::::::::::::::::||-|--|--|--||- |--|-\r\n      |- ||  |  |  | ||:::::::::::::::::::::|| |  |  |  ||= |  | \r\n ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^~~~~~~~~~\r\n\r\nThis system is for the use of authorized users and legitimate new users only.\r\nThreshold is a live performance, text roleplaying game. Acceptable usage of\r\nthis computer system is ONLY to play Threshold RPG. Inappropriate or unlawful\r\nuse of this computer system will be reported to the appropriate authorities.\r\n\r\n[If you already have a character on Threshold, enter your character name now. ]\r\n[If you want to create a character, type \"new\" at the prompt (without quotes).]\r\n\r\nWho dares cross this Threshold? ",
      "dsr_replies": 0,
      "dsr_requests": 0,
      "encoding": "UTF-8",
      "mssp": {
        "ANSI": "1",
        "CLASSES": "12",
        "CLASSES-NOTES": "Classes are referred to as guilds",
        "CODEBASE": "Custom",
        "CONTACT": "threshold@frogdice.com",
        "CRAWL DELAY": "-1",
        "CREATED": "1996",
        "DISCORD": "https://discord.gg/0rDwGcIiYEueqon1",
        "FAMILY": "LPMud",
        "GAMEPLAY": "Adventure",
        "GAMESYSTEM": "Custom",
        "GENRE": "Fantasy",
        "GMCP": "1",
        "HIRING BUILDERS": "0",
        "HIRING CODERS": "0",
        "HOSTNAME": "thresholdrpg.com",
        "ICON": "https://wiki.thresholdrpg.com/images/9/92/Griffon-right-wiki.jpg",
        "INTERMUD": "",
        "IP": "35.160.129.187",
        "LANGUAGE": "English",
        "LOCATION": "US",
        "MCCP": "1",
        "MCP": "0",
        "MINIMUM AGE": "18",
        "MSP": "0",
        "MXP": "1",
        "NAME": "Threshold",
        "PAY FOR PERKS": "1",
        "PAY TO PLAY": "0",
        "PLAYERS": "133",
        "PORT": "3333",
        "PUEBLO": "0",
        "RACES": "12",
        "RACES-NOTES": "only includes playable races",
        "SSL": "-1",
        "STATUS": "Live",
        "SUBGENRE": "Medieval Fantasy",
        "UPTIME": "1769962072",
        "UTF-8": "1",
        "VT100": "0",
        "WEBSITE": "https://www.thresholdrpg.com/",
        "XTERM 256 COLORS": "1",
        "XTERM TRU COLORS": "0"
      },
      "option_states": {
        "environ_requested": [
          {
            "name": "*",
            "type": "VAR"
          },
          {
            "name": "*",
            "type": "USERVAR"
          }
        ],
        "server_offered": {
          "AARDWOLF": false,
          "ATCP": false,
          "CHARSET": true,
          "GMCP": true,
          "MCCP2": true,
          "MCCP3": false,
          "MSDP": true,
          "MSP": true,
          "MSSP": true,
          "MXP": false,
          "ZMP": true
        },
        "server_requested": {
          "AARDWOLF": false,
          "ATCP": false,
          "GMCP": true,
          "MCCP2": true,
          "MCCP3": false,
          "MSDP": true,
          "MSP": true,
          "MSSP": true,
          "MXP": true,
          "NAWS": true,
          "NEW_ENVIRON": true,
          "TTYPE": true,
          "ZMP": true
        }
      },
      "scan_type": "quick",
      "timing": {
        "probe": 0.15207934379577637,
        "total": 10.811413764953613
      }
    }
  },
  "sessions": [
    {
      "connected": "2026-03-07T03:57:56.536534+00:00",
      "host": "thresholdrpg.com",
      "ip": "35.160.129.187",
      "port": 3333
    }
  ]
}

Connection Log

Debug-level log of the Telnet negotiation session, showing each IAC (Interpret As Command) exchange between client and server.

Generated by telnetlib3-fingerprint

telnetlib3-fingerprint --loglevel=debug thresholdrpg.com 3333
Show Logfile
DEBUG client.py:1193 Fingerprint client: host=thresholdrpg.com port=3333
INFO client_base.py:186 Connected to <Peer 35.160.129.187 3333>
DEBUG stream_writer.py:3330 pending_option[WILL + MXP] = True
DEBUG stream_writer.py:1019 send IAC WILL MXP
DEBUG stream_writer.py:3330 pending_option[WILL + ATCP] = True
DEBUG stream_writer.py:1019 send IAC WILL ATCP
DEBUG stream_writer.py:3330 pending_option[WILL + MCCP3_COMPRESS] = True
DEBUG stream_writer.py:1019 send IAC WILL MCCP3_COMPRESS
DEBUG stream_writer.py:3330 pending_option[WILL + GMCP] = True
DEBUG stream_writer.py:1019 send IAC WILL GMCP
DEBUG stream_writer.py:3330 pending_option[WILL + AARDWOLF] = True
DEBUG stream_writer.py:1019 send IAC WILL AARDWOLF
DEBUG stream_writer.py:3330 pending_option[WILL + MSP] = True
DEBUG stream_writer.py:1019 send IAC WILL MSP
DEBUG stream_writer.py:3330 pending_option[WILL + MSDP] = True
DEBUG stream_writer.py:1019 send IAC WILL MSDP
DEBUG stream_writer.py:3330 pending_option[WILL + MSSP] = True
DEBUG stream_writer.py:1019 send IAC WILL MSSP
DEBUG stream_writer.py:3330 pending_option[WILL + ZMP] = True
DEBUG stream_writer.py:1019 send IAC WILL ZMP
DEBUG stream_writer.py:3330 pending_option[WILL + MCCP2_COMPRESS] = True
DEBUG stream_writer.py:1019 send IAC WILL MCCP2_COMPRESS
DEBUG stream_writer.py:3330 pending_option[DO + MXP] = True
DEBUG stream_writer.py:1019 send IAC DO MXP
DEBUG stream_writer.py:3330 pending_option[DO + ATCP] = True
DEBUG stream_writer.py:1019 send IAC DO ATCP
DEBUG stream_writer.py:3330 pending_option[DO + MCCP3_COMPRESS] = True
DEBUG stream_writer.py:1019 send IAC DO MCCP3_COMPRESS
DEBUG stream_writer.py:3330 pending_option[DO + GMCP] = True
DEBUG stream_writer.py:1019 send IAC DO GMCP
DEBUG stream_writer.py:3330 pending_option[DO + AARDWOLF] = True
DEBUG stream_writer.py:1019 send IAC DO AARDWOLF
DEBUG stream_writer.py:3330 pending_option[DO + MSP] = True
DEBUG stream_writer.py:1019 send IAC DO MSP
DEBUG stream_writer.py:3330 pending_option[DO + MSDP] = True
DEBUG stream_writer.py:1019 send IAC DO MSDP
DEBUG stream_writer.py:3330 pending_option[DO + MSSP] = True
DEBUG stream_writer.py:1019 send IAC DO MSSP
DEBUG stream_writer.py:3330 pending_option[DO + ZMP] = True
DEBUG stream_writer.py:1019 send IAC DO ZMP
DEBUG stream_writer.py:3330 pending_option[DO + MCCP2_COMPRESS] = True
DEBUG stream_writer.py:1019 send IAC DO MCCP2_COMPRESS
DEBUG stream_writer.py:768 recv IAC DO TTYPE
DEBUG stream_writer.py:1836 handle_do(TTYPE)
DEBUG stream_writer.py:3330 pending_option[WILL + TTYPE] = True
DEBUG stream_writer.py:1019 send IAC WILL TTYPE
DEBUG stream_writer.py:3330 pending_option[SB + TTYPE] = True
DEBUG stream_writer.py:3330 local_option[TTYPE] = True
DEBUG stream_writer.py:3330 pending_option[WILL + TTYPE] = False
DEBUG stream_writer.py:768 recv IAC DO NAWS
DEBUG stream_writer.py:1836 handle_do(NAWS)
DEBUG stream_writer.py:3330 pending_option[WILL + NAWS] = True
DEBUG stream_writer.py:1019 send IAC WILL NAWS
DEBUG stream_writer.py:2453 send IAC SB NAWS (rows=25, cols=80) IAC SE
DEBUG stream_writer.py:3330 local_option[NAWS] = True
DEBUG stream_writer.py:3330 pending_option[WILL + NAWS] = False
DEBUG stream_writer.py:768 recv IAC DO NEW_ENVIRON
DEBUG stream_writer.py:1836 handle_do(NEW_ENVIRON)
DEBUG stream_writer.py:3330 pending_option[WILL + NEW_ENVIRON] = True
DEBUG stream_writer.py:1019 send IAC WILL NEW_ENVIRON
DEBUG stream_writer.py:3330 pending_option[SB + NEW_ENVIRON] = True
DEBUG stream_writer.py:3330 local_option[NEW_ENVIRON] = True
DEBUG stream_writer.py:3330 pending_option[WILL + NEW_ENVIRON] = False
DEBUG stream_writer.py:768 recv IAC WILL MCCP2_COMPRESS
DEBUG stream_writer.py:1994 handle_will(MCCP2_COMPRESS)
DEBUG stream_writer.py:993 skip DO MCCP2_COMPRESS; pending_option = True
DEBUG stream_writer.py:3330 remote_option[MCCP2_COMPRESS] = True
DEBUG stream_writer.py:3330 pending_option[DO + MCCP2_COMPRESS] = False
DEBUG stream_writer.py:768 recv IAC DO MXP
DEBUG stream_writer.py:1836 handle_do(MXP)
DEBUG stream_writer.py:993 skip WILL MXP; pending_option = True
DEBUG stream_writer.py:3330 local_option[MXP] = True
DEBUG stream_writer.py:3330 pending_option[WILL + MXP] = False
DEBUG stream_writer.py:768 recv IAC WILL GMCP
DEBUG stream_writer.py:1994 handle_will(GMCP)
DEBUG stream_writer.py:993 skip DO GMCP; pending_option = True
DEBUG stream_writer.py:3330 remote_option[GMCP] = True
DEBUG stream_writer.py:1067 send IAC SB GMCP Core.Hello IAC SE
DEBUG stream_writer.py:1067 send IAC SB GMCP Core.Supports.Set IAC SE
INFO client.py:201 GMCP handshake: Core.Hello + Core.Supports.Set ['Char 1', 'Char.Vitals 1', 'Char.Items 1', 'Room 1', 'Room.Info
    1', 'Comm 1', 'Comm.Channel 1', 'Group 1']
DEBUG stream_writer.py:3330 pending_option[DO + GMCP] = False
DEBUG stream_writer.py:768 recv IAC WILL MSSP
DEBUG stream_writer.py:1994 handle_will(MSSP)
DEBUG stream_writer.py:993 skip DO MSSP; pending_option = True
DEBUG stream_writer.py:3330 remote_option[MSSP] = True
DEBUG stream_writer.py:3330 pending_option[DO + MSSP] = False
DEBUG stream_writer.py:768 recv IAC WILL CHARSET
DEBUG stream_writer.py:786 WILL CHARSET (bi-directional capability exchange)
DEBUG stream_writer.py:1994 handle_will(CHARSET)
DEBUG stream_writer.py:3330 pending_option[DO + CHARSET] = True
DEBUG stream_writer.py:1019 send IAC DO CHARSET
DEBUG stream_writer.py:3330 remote_option[CHARSET] = True
DEBUG stream_writer.py:3330 pending_option[DO + CHARSET] = False
DEBUG stream_writer.py:768 recv IAC WILL MSP
DEBUG stream_writer.py:1994 handle_will(MSP)
DEBUG stream_writer.py:993 skip DO MSP; pending_option = True
DEBUG stream_writer.py:3330 remote_option[MSP] = True
DEBUG stream_writer.py:3330 pending_option[DO + MSP] = False
DEBUG stream_writer.py:1400 IAC GA: Go-Ahead (unhandled).
DEBUG stream_writer.py:768 recv IAC DONT ATCP
DEBUG stream_writer.py:1959 handle_dont(ATCP)
DEBUG stream_writer.py:3330 pending_option[WILL + ATCP] = False
DEBUG stream_writer.py:3330 local_option[ATCP] = False
DEBUG stream_writer.py:768 recv IAC DONT MCCP3_COMPRESS
DEBUG stream_writer.py:1959 handle_dont(MCCP3_COMPRESS)
DEBUG stream_writer.py:3330 pending_option[WILL + MCCP3_COMPRESS] = False
DEBUG stream_writer.py:3330 local_option[MCCP3_COMPRESS] = False
DEBUG stream_writer.py:768 recv IAC DO GMCP
DEBUG stream_writer.py:1836 handle_do(GMCP)
DEBUG stream_writer.py:993 skip WILL GMCP; pending_option = True
DEBUG stream_writer.py:3330 local_option[GMCP] = True
DEBUG stream_writer.py:3330 pending_option[WILL + GMCP] = False
DEBUG stream_writer.py:768 recv IAC DONT AARDWOLF
DEBUG stream_writer.py:1959 handle_dont(AARDWOLF)
DEBUG stream_writer.py:3330 pending_option[WILL + AARDWOLF] = False
DEBUG stream_writer.py:3330 local_option[AARDWOLF] = False
DEBUG stream_writer.py:768 recv IAC DO MSP
DEBUG stream_writer.py:1836 handle_do(MSP)
DEBUG stream_writer.py:993 skip WILL MSP; pending_option = True
DEBUG stream_writer.py:3330 local_option[MSP] = True
DEBUG stream_writer.py:3330 pending_option[WILL + MSP] = False
DEBUG stream_writer.py:768 recv IAC DO MSDP
DEBUG stream_writer.py:1836 handle_do(MSDP)
DEBUG stream_writer.py:993 skip WILL MSDP; pending_option = True
DEBUG stream_writer.py:3330 local_option[MSDP] = True
DEBUG stream_writer.py:3330 pending_option[WILL + MSDP] = False
DEBUG stream_writer.py:768 recv IAC DO MSSP
DEBUG stream_writer.py:1836 handle_do(MSSP)
DEBUG stream_writer.py:993 skip WILL MSSP; pending_option = True
DEBUG stream_writer.py:3330 local_option[MSSP] = True
DEBUG stream_writer.py:3330 pending_option[WILL + MSSP] = False
DEBUG stream_writer.py:768 recv IAC DO ZMP
DEBUG stream_writer.py:1836 handle_do(ZMP)
DEBUG stream_writer.py:993 skip WILL ZMP; pending_option = True
DEBUG stream_writer.py:3330 local_option[ZMP] = True
DEBUG stream_writer.py:3330 pending_option[WILL + ZMP] = False
DEBUG stream_writer.py:768 recv IAC DO MCCP2_COMPRESS
DEBUG stream_writer.py:1836 handle_do(MCCP2_COMPRESS)
DEBUG stream_writer.py:993 skip WILL MCCP2_COMPRESS; pending_option = True
DEBUG stream_writer.py:3330 local_option[MCCP2_COMPRESS] = True
DEBUG stream_writer.py:3330 pending_option[WILL + MCCP2_COMPRESS] = False
DEBUG stream_writer.py:768 recv IAC WONT MXP
DEBUG stream_writer.py:2148 handle_wont(MXP)
DEBUG stream_writer.py:3330 remote_option[MXP] = False
DEBUG stream_writer.py:3330 pending_option[DO + MXP] = False
DEBUG stream_writer.py:768 recv IAC WONT ATCP
DEBUG stream_writer.py:2148 handle_wont(ATCP)
DEBUG stream_writer.py:3330 remote_option[ATCP] = False
DEBUG stream_writer.py:3330 pending_option[DO + ATCP] = False
DEBUG stream_writer.py:768 recv IAC WONT MCCP3_COMPRESS
DEBUG stream_writer.py:2148 handle_wont(MCCP3_COMPRESS)
DEBUG stream_writer.py:3330 remote_option[MCCP3_COMPRESS] = False
DEBUG stream_writer.py:3330 pending_option[DO + MCCP3_COMPRESS] = False
DEBUG stream_writer.py:768 recv IAC WONT AARDWOLF
DEBUG stream_writer.py:2148 handle_wont(AARDWOLF)
DEBUG stream_writer.py:3330 remote_option[AARDWOLF] = False
DEBUG stream_writer.py:3330 pending_option[DO + AARDWOLF] = False
DEBUG stream_writer.py:768 recv IAC WILL MSDP
DEBUG stream_writer.py:1994 handle_will(MSDP)
DEBUG stream_writer.py:993 skip DO MSDP; pending_option = True
DEBUG stream_writer.py:3330 remote_option[MSDP] = True
DEBUG stream_writer.py:3330 pending_option[DO + MSDP] = False
DEBUG stream_writer.py:762 begin sub-negotiation SB MSSP
DEBUG stream_writer.py:749 sub-negotiation cmd MSSP SE completion byte
DEBUG stream_writer.py:2187 [SB + MSSP] unsolicited
DEBUG stream_writer.py:1745 MSSP: {'PLAYERS': '133', 'PAY TO PLAY': '0', 'PORT': '3333', 'LOCATION': 'US', 'DISCORD':
    'https://discord.gg/0rDwGcIiYEueqon1', 'XTERM 256 COLORS': '1', 'RACES-NOTES': 'only includes playable races', 'INTERMUD': '',
    'HOSTNAME': 'thresholdrpg.com', 'SSL': '-1', 'RACES': '12', 'XTERM TRU COLORS': '0', 'GENRE': 'Fantasy', 'GAMEPLAY':
    'Adventure', 'LANGUAGE': 'English', 'CONTACT': 'threshold@frogdice.com', 'VT100': '0', 'PUEBLO': '0', 'HIRING CODERS': '0',
    'FAMILY': 'LPMud', 'IP': '35.160.129.187', 'CRAWL DELAY': '-1', 'HIRING BUILDERS': '0', 'UTF-8': '1', 'CLASSES-NOTES':
    'Classes are referred to as guilds', 'CREATED': '1996', 'PAY FOR PERKS': '1', 'CLASSES': '12', 'NAME': 'Threshold', 'MSP':
    '0', 'UPTIME': '1769962072', 'GAMESYSTEM': 'Custom', 'STATUS': 'Live', 'GMCP': '1', 'CODEBASE': 'Custom', 'MXP': '1',
    'WEBSITE': 'https://www.thresholdrpg.com/', 'ICON': 'https://wiki.thresholdrpg.com/images/9/92/Griffon-right-wiki.jpg', 'MCP':
    '0', 'MCCP': '1', 'ANSI': '1', 'SUBGENRE': 'Medieval Fantasy', 'MINIMUM AGE': '18'}
DEBUG stream_writer.py:768 recv IAC WILL ZMP
DEBUG stream_writer.py:1994 handle_will(ZMP)
DEBUG stream_writer.py:993 skip DO ZMP; pending_option = True
DEBUG stream_writer.py:3330 remote_option[ZMP] = True
DEBUG stream_writer.py:3330 pending_option[DO + ZMP] = False
DEBUG stream_writer.py:762 begin sub-negotiation SB MCCP2_COMPRESS
DEBUG stream_writer.py:749 sub-negotiation cmd MCCP2_COMPRESS SE completion byte
DEBUG stream_writer.py:2187 [SB + MCCP2_COMPRESS] unsolicited
DEBUG stream_writer.py:3178 MCCP2 activated
DEBUG client_base.py:448 MCCP2 decompression started (server→client)
DEBUG stream_writer.py:762 begin sub-negotiation SB TTYPE
DEBUG stream_writer.py:749 sub-negotiation cmd TTYPE SE completion byte
DEBUG stream_writer.py:3330 pending_option[SB + TTYPE] = False
DEBUG stream_writer.py:2353 recv TTYPE SEND: b''
DEBUG stream_writer.py:2365 send IAC SB TTYPE IS b'xterm-256color' IAC SE
DEBUG stream_writer.py:762 begin sub-negotiation SB NEW_ENVIRON
DEBUG stream_writer.py:749 sub-negotiation cmd NEW_ENVIRON SE completion byte
DEBUG stream_writer.py:3330 pending_option[SB + NEW_ENVIRON] = False
DEBUG stream_writer.py:2398 recv NEW_ENVIRON SEND (all)
DEBUG stream_writer.py:2419 env send: LANG='C', TERM='xterm-256color', LINES=25, COLUMNS=80, COLORTERM=''
DEBUG client_base.py:496 negotiation complete after 0.31s.
DEBUG stream_writer.py:762 begin sub-negotiation SB CHARSET
DEBUG stream_writer.py:749 sub-negotiation cmd CHARSET SE completion byte
DEBUG stream_writer.py:2187 [SB + CHARSET] unsolicited
DEBUG client.py:376 encoding negotiated: UTF-8
DEBUG stream_writer.py:2270 send IAC SB CHARSET ACCEPTED UTF-8 IAC SE
DEBUG stream_writer.py:1400 IAC GA: Go-Ahead (unhandled).
DEBUG stream_writer.py:1400 IAC GA: Go-Ahead (unhandled).
DEBUG stream_writer.py:3330 pending_option[DO + BINARY] = True
DEBUG stream_writer.py:1019 send IAC DO BINARY
DEBUG stream_writer.py:3330 pending_option[DO + SGA] = True
DEBUG stream_writer.py:1019 send IAC DO SGA
DEBUG stream_writer.py:3330 pending_option[DO + ECHO] = True
DEBUG stream_writer.py:1019 send IAC DO ECHO
DEBUG stream_writer.py:3330 pending_option[DO + STATUS] = True
DEBUG stream_writer.py:1019 send IAC DO STATUS
DEBUG stream_writer.py:3330 pending_option[DO + EOR] = True
DEBUG stream_writer.py:1019 send IAC DO EOR
DEBUG stream_writer.py:3330 pending_option[DO + COM_PORT_OPTION] = True
DEBUG stream_writer.py:1019 send IAC DO COM_PORT_OPTION
DEBUG stream_writer.py:768 recv IAC WILL BINARY
DEBUG stream_writer.py:1994 handle_will(BINARY)
DEBUG stream_writer.py:993 skip DO BINARY; pending_option = True
DEBUG stream_writer.py:3330 remote_option[BINARY] = True
DEBUG stream_writer.py:3330 pending_option[DO + BINARY] = False
DEBUG stream_writer.py:768 recv IAC WILL SGA
DEBUG stream_writer.py:1994 handle_will(SGA)
DEBUG stream_writer.py:993 skip DO SGA; pending_option = True
DEBUG stream_writer.py:3330 remote_option[SGA] = True
DEBUG stream_writer.py:3330 pending_option[DO + SGA] = False
DEBUG stream_writer.py:768 recv IAC WONT SGA
DEBUG stream_writer.py:2148 handle_wont(SGA)
DEBUG stream_writer.py:3330 remote_option[SGA] = False
DEBUG stream_writer.py:768 recv IAC WILL ECHO
DEBUG stream_writer.py:1994 handle_will(ECHO)
DEBUG stream_writer.py:993 skip DO ECHO; pending_option = True
DEBUG stream_writer.py:3330 remote_option[ECHO] = True
DEBUG stream_writer.py:3330 pending_option[DO + ECHO] = False
DEBUG stream_writer.py:768 recv IAC WONT STATUS
DEBUG stream_writer.py:2148 handle_wont(STATUS)
DEBUG stream_writer.py:3330 remote_option[STATUS] = False
DEBUG stream_writer.py:3330 pending_option[DO + STATUS] = False
DEBUG stream_writer.py:768 recv IAC WONT EOR
DEBUG stream_writer.py:2148 handle_wont(EOR)
DEBUG stream_writer.py:3330 remote_option[EOR] = False
DEBUG stream_writer.py:3330 pending_option[DO + EOR] = False
DEBUG stream_writer.py:768 recv IAC WONT COM_PORT_OPTION
DEBUG stream_writer.py:2148 handle_wont(COM_PORT_OPTION)
DEBUG stream_writer.py:3330 remote_option[COM_PORT_OPTION] = False
DEBUG stream_writer.py:3330 pending_option[DO + COM_PORT_OPTION] = False
INFO fingerprinting.py:746 new server fingerprint 3962dbc65d7d0ef2
INFO client_base.py:118 Connection closed to <Peer 35.160.129.187 3333>