<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _read_mode_tr(self, size, kind):
 """Read Traceroute option. Positional arguments: size - int, length of option kind - int, 82 (TR) Returns: * dict -- extracted Traceroute (TR) option Structure of Traceroute (TR) option [RFC 1393][RFC 6814]: 0 8 16 24 |F| C | Number | Length | ID Number | | Outbound Hop Count | Return Hop Count | | Originator IP Address | Octets Bits Name Description 0 0 ip.tr.kind Kind (82) 0 0 ip.tr.type.copy Copied Flag (0) 0 1 ip.tr.type.class Option Class (0) 0 3 ip.tr.type.number Option Number (18) 1 8 ip.tr.length Length (12) 2 16 ip.tr.id ID Number 4 32 ip.tr.ohc Outbound Hop Count 6 48 ip.tr.rhc Return Hop Count 8 64 ip.tr.ip Originator IP Address """

        if size != 12:
            raise ProtocolError(f'{self.alias}: [Optno {kind}] invalid format')

        _idnm = self._read_unpack(2)
        _ohcn = self._read_unpack(2)
        _rhcn = self._read_unpack(2)
        _ipad = self._read_ipv4_addr()

        data = dict(
            kind=kind,
            type=self._read_opt_type(kind),
            length=size,
            id=_idnm,
            ohc=_ohcn,
            rhc=_rhcn,
            ip=_ipad,
        )

        return data