def _read_opt_qs(self, code, *, desc):
_type = self._read_opt_type(code)<EOL>_size = self._read_unpack(<NUM_LIT:1>)<EOL>if _size != <NUM_LIT:6>:<EOL><INDENT>raise ProtocolError(f'<STR_LIT>')<EOL><DEDENT>_fcrr = self._read_binary(<NUM_LIT:1>)<EOL>_func = int(_fcrr[:<NUM_LIT:4>], base=<NUM_LIT:2>)<EOL>_rate = int(_fcrr[<NUM_LIT:4>:], base=<NUM_LIT:2>)<EOL>_ttlv = self._read_unpack(<NUM_LIT:1>)<EOL>_nonr = self._read_binary(<NUM_LIT:4>)<EOL>_qsnn = int(_nonr[:<NUM_LIT:30>], base=<NUM_LIT:2>)<EOL>if _func != <NUM_LIT:0> and _func != <NUM_LIT:8>:<EOL><INDENT>raise ProtocolError(f'<STR_LIT>')<EOL><DEDENT>data = dict(<EOL>type=_type,<EOL>length=_size + <NUM_LIT:2>,<EOL>func=_QS_FUNC.get(_func),<EOL>rate=<NUM_LIT> * (<NUM_LIT:2> ** _rate) / <NUM_LIT:1000>,<EOL>ttl=None if _func else _rate,<EOL>nounce=_qsnn,<EOL>)<EOL>return data<EOL>
Read IPv6_Opts Quick Start option.

        Structure of IPv6_Opts Quick-Start option [RFC 4782]:
            * A Quick-Start Request.
                 0                   1                   2                   3
                 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
                +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                |   Option      |  Length=6     | Func. | Rate  |   QS TTL      |
                |               |               | 0000  |Request|               |
                +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                |                        QS Nonce                           | R |
                +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            * Report of Approved Rate.
                 0                   1                   2                   3
                 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
                +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                |   Option      |  Length=6     | Func. | Rate  |   Not Used    |
                |               |               | 1000  | Report|               |
                +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                |                        QS Nonce                           | R |
                +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            Octets      Bits        Name                        Description
              0           0     ipv6_opts.qs.type           Option Type
              0           0     ipv6_opts.qs.type.value     Option Number
              0           0     ipv6_opts.qs.type.action    Action (00)
              0           2     ipv6_opts.qs.type.change    Change Flag (1)
              1           8     ipv6_opts.qs.length         Length of Option Data
              2          16     ipv6_opts.qs.func           Function (0/8)
              2          20     ipv6_opts.qs.rate           Rate Request / Report (in Kbps)
              3          24     ipv6_opts.qs.ttl            QS TTL / None
              4          32     ipv6_opts.qs.nounce         QS Nounce
              7          62     -                           Reserved