1e18a033bSKonstantin Ananyev
2e18a033bSKonstantin Ananyev/*
3e18a033bSKonstantin Ananyev * Copyright (C) Nginx, Inc.
4e18a033bSKonstantin Ananyev * Copyright (C) Valentin V. Bartenev
5e18a033bSKonstantin Ananyev */
6e18a033bSKonstantin Ananyev
7e18a033bSKonstantin Ananyev
8e18a033bSKonstantin Ananyev#include <ngx_config.h>
9e18a033bSKonstantin Ananyev#include <ngx_core.h>
10e18a033bSKonstantin Ananyev#include <ngx_http.h>
11e18a033bSKonstantin Ananyev
12e18a033bSKonstantin Ananyev
13e18a033bSKonstantin Ananyevtypedef struct {
14e18a033bSKonstantin Ananyev    u_char  next;
15e18a033bSKonstantin Ananyev    u_char  emit;
16e18a033bSKonstantin Ananyev    u_char  sym;
17e18a033bSKonstantin Ananyev    u_char  ending;
18e18a033bSKonstantin Ananyev} ngx_http_v2_huff_decode_code_t;
19e18a033bSKonstantin Ananyev
20e18a033bSKonstantin Ananyev
21e18a033bSKonstantin Ananyevstatic ngx_inline ngx_int_t ngx_http_v2_huff_decode_bits(u_char *state,
22e18a033bSKonstantin Ananyev    u_char *ending, ngx_uint_t bits, u_char **dst);
23e18a033bSKonstantin Ananyev
24e18a033bSKonstantin Ananyev
25e18a033bSKonstantin Ananyevstatic ngx_http_v2_huff_decode_code_t  ngx_http_v2_huff_decode_codes[256][16] =
26e18a033bSKonstantin Ananyev{
27e18a033bSKonstantin Ananyev    /* 0 */
28e18a033bSKonstantin Ananyev    {
29e18a033bSKonstantin Ananyev        {0x04, 0x00, 0x00, 0x00}, {0x05, 0x00, 0x00, 0x00},
30e18a033bSKonstantin Ananyev        {0x07, 0x00, 0x00, 0x00}, {0x08, 0x00, 0x00, 0x00},
31e18a033bSKonstantin Ananyev        {0x0b, 0x00, 0x00, 0x00}, {0x0c, 0x00, 0x00, 0x00},
32e18a033bSKonstantin Ananyev        {0x10, 0x00, 0x00, 0x00}, {0x13, 0x00, 0x00, 0x00},
33e18a033bSKonstantin Ananyev        {0x19, 0x00, 0x00, 0x00}, {0x1c, 0x00, 0x00, 0x00},
34e18a033bSKonstantin Ananyev        {0x20, 0x00, 0x00, 0x00}, {0x23, 0x00, 0x00, 0x00},
35e18a033bSKonstantin Ananyev        {0x2a, 0x00, 0x00, 0x00}, {0x31, 0x00, 0x00, 0x00},
36e18a033bSKonstantin Ananyev        {0x39, 0x00, 0x00, 0x00}, {0x40, 0x00, 0x00, 0x01}
37e18a033bSKonstantin Ananyev    },
38e18a033bSKonstantin Ananyev    {
39e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x30, 0x01}, {0x00, 0x01, 0x31, 0x01},
40e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x32, 0x01}, {0x00, 0x01, 0x61, 0x01},
41e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x63, 0x01}, {0x00, 0x01, 0x65, 0x01},
42e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x69, 0x01}, {0x00, 0x01, 0x6f, 0x01},
43e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x73, 0x01}, {0x00, 0x01, 0x74, 0x01},
44e18a033bSKonstantin Ananyev        {0x0d, 0x00, 0x00, 0x00}, {0x0e, 0x00, 0x00, 0x00},
45e18a033bSKonstantin Ananyev        {0x11, 0x00, 0x00, 0x00}, {0x12, 0x00, 0x00, 0x00},
46e18a033bSKonstantin Ananyev        {0x14, 0x00, 0x00, 0x00}, {0x15, 0x00, 0x00, 0x00}
47e18a033bSKonstantin Ananyev    },
48e18a033bSKonstantin Ananyev    {
49e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x30, 0x00}, {0x16, 0x01, 0x30, 0x01},
50e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x31, 0x00}, {0x16, 0x01, 0x31, 0x01},
51e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x32, 0x00}, {0x16, 0x01, 0x32, 0x01},
52e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x61, 0x00}, {0x16, 0x01, 0x61, 0x01},
53e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x63, 0x00}, {0x16, 0x01, 0x63, 0x01},
54e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x65, 0x00}, {0x16, 0x01, 0x65, 0x01},
55e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x69, 0x00}, {0x16, 0x01, 0x69, 0x01},
56e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x6f, 0x00}, {0x16, 0x01, 0x6f, 0x01}
57e18a033bSKonstantin Ananyev    },
58e18a033bSKonstantin Ananyev    {
59e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x30, 0x00}, {0x09, 0x01, 0x30, 0x00},
60e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x30, 0x00}, {0x28, 0x01, 0x30, 0x01},
61e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x31, 0x00}, {0x09, 0x01, 0x31, 0x00},
62e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x31, 0x00}, {0x28, 0x01, 0x31, 0x01},
63e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x32, 0x00}, {0x09, 0x01, 0x32, 0x00},
64e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x32, 0x00}, {0x28, 0x01, 0x32, 0x01},
65e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x61, 0x00}, {0x09, 0x01, 0x61, 0x00},
66e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x61, 0x00}, {0x28, 0x01, 0x61, 0x01}
67e18a033bSKonstantin Ananyev    },
68e18a033bSKonstantin Ananyev    {
69e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x30, 0x00}, {0x06, 0x01, 0x30, 0x00},
70e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x30, 0x00}, {0x0f, 0x01, 0x30, 0x00},
71e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x30, 0x00}, {0x1f, 0x01, 0x30, 0x00},
72e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x30, 0x00}, {0x38, 0x01, 0x30, 0x01},
73e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x31, 0x00}, {0x06, 0x01, 0x31, 0x00},
74e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x31, 0x00}, {0x0f, 0x01, 0x31, 0x00},
75e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x31, 0x00}, {0x1f, 0x01, 0x31, 0x00},
76e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x31, 0x00}, {0x38, 0x01, 0x31, 0x01}
77e18a033bSKonstantin Ananyev    },
78e18a033bSKonstantin Ananyev    /* 5 */
79e18a033bSKonstantin Ananyev    {
80e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x32, 0x00}, {0x06, 0x01, 0x32, 0x00},
81e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x32, 0x00}, {0x0f, 0x01, 0x32, 0x00},
82e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x32, 0x00}, {0x1f, 0x01, 0x32, 0x00},
83e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x32, 0x00}, {0x38, 0x01, 0x32, 0x01},
84e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x61, 0x00}, {0x06, 0x01, 0x61, 0x00},
85e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x61, 0x00}, {0x0f, 0x01, 0x61, 0x00},
86e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x61, 0x00}, {0x1f, 0x01, 0x61, 0x00},
87e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x61, 0x00}, {0x38, 0x01, 0x61, 0x01}
88e18a033bSKonstantin Ananyev    },
89e18a033bSKonstantin Ananyev    {
90e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x63, 0x00}, {0x09, 0x01, 0x63, 0x00},
91e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x63, 0x00}, {0x28, 0x01, 0x63, 0x01},
92e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x65, 0x00}, {0x09, 0x01, 0x65, 0x00},
93e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x65, 0x00}, {0x28, 0x01, 0x65, 0x01},
94e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x69, 0x00}, {0x09, 0x01, 0x69, 0x00},
95e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x69, 0x00}, {0x28, 0x01, 0x69, 0x01},
96e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x6f, 0x00}, {0x09, 0x01, 0x6f, 0x00},
97e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x6f, 0x00}, {0x28, 0x01, 0x6f, 0x01}
98e18a033bSKonstantin Ananyev    },
99e18a033bSKonstantin Ananyev    {
100e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x63, 0x00}, {0x06, 0x01, 0x63, 0x00},
101e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x63, 0x00}, {0x0f, 0x01, 0x63, 0x00},
102e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x63, 0x00}, {0x1f, 0x01, 0x63, 0x00},
103e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x63, 0x00}, {0x38, 0x01, 0x63, 0x01},
104e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x65, 0x00}, {0x06, 0x01, 0x65, 0x00},
105e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x65, 0x00}, {0x0f, 0x01, 0x65, 0x00},
106e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x65, 0x00}, {0x1f, 0x01, 0x65, 0x00},
107e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x65, 0x00}, {0x38, 0x01, 0x65, 0x01}
108e18a033bSKonstantin Ananyev    },
109e18a033bSKonstantin Ananyev    {
110e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x69, 0x00}, {0x06, 0x01, 0x69, 0x00},
111e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x69, 0x00}, {0x0f, 0x01, 0x69, 0x00},
112e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x69, 0x00}, {0x1f, 0x01, 0x69, 0x00},
113e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x69, 0x00}, {0x38, 0x01, 0x69, 0x01},
114e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x6f, 0x00}, {0x06, 0x01, 0x6f, 0x00},
115e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x6f, 0x00}, {0x0f, 0x01, 0x6f, 0x00},
116e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x6f, 0x00}, {0x1f, 0x01, 0x6f, 0x00},
117e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x6f, 0x00}, {0x38, 0x01, 0x6f, 0x01}
118e18a033bSKonstantin Ananyev    },
119e18a033bSKonstantin Ananyev    {
120e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x73, 0x00}, {0x16, 0x01, 0x73, 0x01},
121e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x74, 0x00}, {0x16, 0x01, 0x74, 0x01},
122e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x20, 0x01}, {0x00, 0x01, 0x25, 0x01},
123e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x2d, 0x01}, {0x00, 0x01, 0x2e, 0x01},
124e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x2f, 0x01}, {0x00, 0x01, 0x33, 0x01},
125e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x34, 0x01}, {0x00, 0x01, 0x35, 0x01},
126e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x36, 0x01}, {0x00, 0x01, 0x37, 0x01},
127e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x38, 0x01}, {0x00, 0x01, 0x39, 0x01}
128e18a033bSKonstantin Ananyev    },
129e18a033bSKonstantin Ananyev    /* 10 */
130e18a033bSKonstantin Ananyev    {
131e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x73, 0x00}, {0x09, 0x01, 0x73, 0x00},
132e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x73, 0x00}, {0x28, 0x01, 0x73, 0x01},
133e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x74, 0x00}, {0x09, 0x01, 0x74, 0x00},
134e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x74, 0x00}, {0x28, 0x01, 0x74, 0x01},
135e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x20, 0x00}, {0x16, 0x01, 0x20, 0x01},
136e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x25, 0x00}, {0x16, 0x01, 0x25, 0x01},
137e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x2d, 0x00}, {0x16, 0x01, 0x2d, 0x01},
138e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x2e, 0x00}, {0x16, 0x01, 0x2e, 0x01}
139e18a033bSKonstantin Ananyev    },
140e18a033bSKonstantin Ananyev    {
141e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x73, 0x00}, {0x06, 0x01, 0x73, 0x00},
142e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x73, 0x00}, {0x0f, 0x01, 0x73, 0x00},
143e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x73, 0x00}, {0x1f, 0x01, 0x73, 0x00},
144e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x73, 0x00}, {0x38, 0x01, 0x73, 0x01},
145e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x74, 0x00}, {0x06, 0x01, 0x74, 0x00},
146e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x74, 0x00}, {0x0f, 0x01, 0x74, 0x00},
147e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x74, 0x00}, {0x1f, 0x01, 0x74, 0x00},
148e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x74, 0x00}, {0x38, 0x01, 0x74, 0x01}
149e18a033bSKonstantin Ananyev    },
150e18a033bSKonstantin Ananyev    {
151e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x20, 0x00}, {0x09, 0x01, 0x20, 0x00},
152e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x20, 0x00}, {0x28, 0x01, 0x20, 0x01},
153e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x25, 0x00}, {0x09, 0x01, 0x25, 0x00},
154e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x25, 0x00}, {0x28, 0x01, 0x25, 0x01},
155e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x2d, 0x00}, {0x09, 0x01, 0x2d, 0x00},
156e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x2d, 0x00}, {0x28, 0x01, 0x2d, 0x01},
157e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x2e, 0x00}, {0x09, 0x01, 0x2e, 0x00},
158e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x2e, 0x00}, {0x28, 0x01, 0x2e, 0x01}
159e18a033bSKonstantin Ananyev    },
160e18a033bSKonstantin Ananyev    {
161e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x20, 0x00}, {0x06, 0x01, 0x20, 0x00},
162e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x20, 0x00}, {0x0f, 0x01, 0x20, 0x00},
163e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x20, 0x00}, {0x1f, 0x01, 0x20, 0x00},
164e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x20, 0x00}, {0x38, 0x01, 0x20, 0x01},
165e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x25, 0x00}, {0x06, 0x01, 0x25, 0x00},
166e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x25, 0x00}, {0x0f, 0x01, 0x25, 0x00},
167e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x25, 0x00}, {0x1f, 0x01, 0x25, 0x00},
168e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x25, 0x00}, {0x38, 0x01, 0x25, 0x01}
169e18a033bSKonstantin Ananyev    },
170e18a033bSKonstantin Ananyev    {
171e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x2d, 0x00}, {0x06, 0x01, 0x2d, 0x00},
172e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x2d, 0x00}, {0x0f, 0x01, 0x2d, 0x00},
173e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x2d, 0x00}, {0x1f, 0x01, 0x2d, 0x00},
174e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x2d, 0x00}, {0x38, 0x01, 0x2d, 0x01},
175e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x2e, 0x00}, {0x06, 0x01, 0x2e, 0x00},
176e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x2e, 0x00}, {0x0f, 0x01, 0x2e, 0x00},
177e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x2e, 0x00}, {0x1f, 0x01, 0x2e, 0x00},
178e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x2e, 0x00}, {0x38, 0x01, 0x2e, 0x01}
179e18a033bSKonstantin Ananyev    },
180e18a033bSKonstantin Ananyev    /* 15 */
181e18a033bSKonstantin Ananyev    {
182e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x2f, 0x00}, {0x16, 0x01, 0x2f, 0x01},
183e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x33, 0x00}, {0x16, 0x01, 0x33, 0x01},
184e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x34, 0x00}, {0x16, 0x01, 0x34, 0x01},
185e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x35, 0x00}, {0x16, 0x01, 0x35, 0x01},
186e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x36, 0x00}, {0x16, 0x01, 0x36, 0x01},
187e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x37, 0x00}, {0x16, 0x01, 0x37, 0x01},
188e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x38, 0x00}, {0x16, 0x01, 0x38, 0x01},
189e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x39, 0x00}, {0x16, 0x01, 0x39, 0x01}
190e18a033bSKonstantin Ananyev    },
191e18a033bSKonstantin Ananyev    {
192e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x2f, 0x00}, {0x09, 0x01, 0x2f, 0x00},
193e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x2f, 0x00}, {0x28, 0x01, 0x2f, 0x01},
194e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x33, 0x00}, {0x09, 0x01, 0x33, 0x00},
195e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x33, 0x00}, {0x28, 0x01, 0x33, 0x01},
196e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x34, 0x00}, {0x09, 0x01, 0x34, 0x00},
197e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x34, 0x00}, {0x28, 0x01, 0x34, 0x01},
198e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x35, 0x00}, {0x09, 0x01, 0x35, 0x00},
199e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x35, 0x00}, {0x28, 0x01, 0x35, 0x01}
200e18a033bSKonstantin Ananyev    },
201e18a033bSKonstantin Ananyev    {
202e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x2f, 0x00}, {0x06, 0x01, 0x2f, 0x00},
203e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x2f, 0x00}, {0x0f, 0x01, 0x2f, 0x00},
204e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x2f, 0x00}, {0x1f, 0x01, 0x2f, 0x00},
205e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x2f, 0x00}, {0x38, 0x01, 0x2f, 0x01},
206e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x33, 0x00}, {0x06, 0x01, 0x33, 0x00},
207e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x33, 0x00}, {0x0f, 0x01, 0x33, 0x00},
208e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x33, 0x00}, {0x1f, 0x01, 0x33, 0x00},
209e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x33, 0x00}, {0x38, 0x01, 0x33, 0x01}
210e18a033bSKonstantin Ananyev    },
211e18a033bSKonstantin Ananyev    {
212e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x34, 0x00}, {0x06, 0x01, 0x34, 0x00},
213e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x34, 0x00}, {0x0f, 0x01, 0x34, 0x00},
214e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x34, 0x00}, {0x1f, 0x01, 0x34, 0x00},
215e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x34, 0x00}, {0x38, 0x01, 0x34, 0x01},
216e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x35, 0x00}, {0x06, 0x01, 0x35, 0x00},
217e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x35, 0x00}, {0x0f, 0x01, 0x35, 0x00},
218e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x35, 0x00}, {0x1f, 0x01, 0x35, 0x00},
219e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x35, 0x00}, {0x38, 0x01, 0x35, 0x01}
220e18a033bSKonstantin Ananyev    },
221e18a033bSKonstantin Ananyev    {
222e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x36, 0x00}, {0x09, 0x01, 0x36, 0x00},
223e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x36, 0x00}, {0x28, 0x01, 0x36, 0x01},
224e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x37, 0x00}, {0x09, 0x01, 0x37, 0x00},
225e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x37, 0x00}, {0x28, 0x01, 0x37, 0x01},
226e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x38, 0x00}, {0x09, 0x01, 0x38, 0x00},
227e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x38, 0x00}, {0x28, 0x01, 0x38, 0x01},
228e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x39, 0x00}, {0x09, 0x01, 0x39, 0x00},
229e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x39, 0x00}, {0x28, 0x01, 0x39, 0x01}
230e18a033bSKonstantin Ananyev    },
231e18a033bSKonstantin Ananyev    /* 20 */
232e18a033bSKonstantin Ananyev    {
233e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x36, 0x00}, {0x06, 0x01, 0x36, 0x00},
234e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x36, 0x00}, {0x0f, 0x01, 0x36, 0x00},
235e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x36, 0x00}, {0x1f, 0x01, 0x36, 0x00},
236e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x36, 0x00}, {0x38, 0x01, 0x36, 0x01},
237e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x37, 0x00}, {0x06, 0x01, 0x37, 0x00},
238e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x37, 0x00}, {0x0f, 0x01, 0x37, 0x00},
239e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x37, 0x00}, {0x1f, 0x01, 0x37, 0x00},
240e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x37, 0x00}, {0x38, 0x01, 0x37, 0x01}
241e18a033bSKonstantin Ananyev    },
242e18a033bSKonstantin Ananyev    {
243e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x38, 0x00}, {0x06, 0x01, 0x38, 0x00},
244e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x38, 0x00}, {0x0f, 0x01, 0x38, 0x00},
245e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x38, 0x00}, {0x1f, 0x01, 0x38, 0x00},
246e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x38, 0x00}, {0x38, 0x01, 0x38, 0x01},
247e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x39, 0x00}, {0x06, 0x01, 0x39, 0x00},
248e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x39, 0x00}, {0x0f, 0x01, 0x39, 0x00},
249e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x39, 0x00}, {0x1f, 0x01, 0x39, 0x00},
250e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x39, 0x00}, {0x38, 0x01, 0x39, 0x01}
251e18a033bSKonstantin Ananyev    },
252e18a033bSKonstantin Ananyev    {
253e18a033bSKonstantin Ananyev        {0x1a, 0x00, 0x00, 0x00}, {0x1b, 0x00, 0x00, 0x00},
254e18a033bSKonstantin Ananyev        {0x1d, 0x00, 0x00, 0x00}, {0x1e, 0x00, 0x00, 0x00},
255e18a033bSKonstantin Ananyev        {0x21, 0x00, 0x00, 0x00}, {0x22, 0x00, 0x00, 0x00},
256e18a033bSKonstantin Ananyev        {0x24, 0x00, 0x00, 0x00}, {0x25, 0x00, 0x00, 0x00},
257e18a033bSKonstantin Ananyev        {0x2b, 0x00, 0x00, 0x00}, {0x2e, 0x00, 0x00, 0x00},
258e18a033bSKonstantin Ananyev        {0x32, 0x00, 0x00, 0x00}, {0x35, 0x00, 0x00, 0x00},
259e18a033bSKonstantin Ananyev        {0x3a, 0x00, 0x00, 0x00}, {0x3d, 0x00, 0x00, 0x00},
260e18a033bSKonstantin Ananyev        {0x41, 0x00, 0x00, 0x00}, {0x44, 0x00, 0x00, 0x01}
261e18a033bSKonstantin Ananyev    },
262e18a033bSKonstantin Ananyev    {
263e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x3d, 0x01}, {0x00, 0x01, 0x41, 0x01},
264e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x5f, 0x01}, {0x00, 0x01, 0x62, 0x01},
265e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x64, 0x01}, {0x00, 0x01, 0x66, 0x01},
266e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x67, 0x01}, {0x00, 0x01, 0x68, 0x01},
267e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x6c, 0x01}, {0x00, 0x01, 0x6d, 0x01},
268e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x6e, 0x01}, {0x00, 0x01, 0x70, 0x01},
269e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x72, 0x01}, {0x00, 0x01, 0x75, 0x01},
270e18a033bSKonstantin Ananyev        {0x26, 0x00, 0x00, 0x00}, {0x27, 0x00, 0x00, 0x00}
271e18a033bSKonstantin Ananyev    },
272e18a033bSKonstantin Ananyev    {
273e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x3d, 0x00}, {0x16, 0x01, 0x3d, 0x01},
274e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x41, 0x00}, {0x16, 0x01, 0x41, 0x01},
275e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x5f, 0x00}, {0x16, 0x01, 0x5f, 0x01},
276e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x62, 0x00}, {0x16, 0x01, 0x62, 0x01},
277e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x64, 0x00}, {0x16, 0x01, 0x64, 0x01},
278e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x66, 0x00}, {0x16, 0x01, 0x66, 0x01},
279e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x67, 0x00}, {0x16, 0x01, 0x67, 0x01},
280e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x68, 0x00}, {0x16, 0x01, 0x68, 0x01}
281e18a033bSKonstantin Ananyev    },
282e18a033bSKonstantin Ananyev    /* 25 */
283e18a033bSKonstantin Ananyev    {
284e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x3d, 0x00}, {0x09, 0x01, 0x3d, 0x00},
285e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x3d, 0x00}, {0x28, 0x01, 0x3d, 0x01},
286e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x41, 0x00}, {0x09, 0x01, 0x41, 0x00},
287e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x41, 0x00}, {0x28, 0x01, 0x41, 0x01},
288e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x5f, 0x00}, {0x09, 0x01, 0x5f, 0x00},
289e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x5f, 0x00}, {0x28, 0x01, 0x5f, 0x01},
290e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x62, 0x00}, {0x09, 0x01, 0x62, 0x00},
291e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x62, 0x00}, {0x28, 0x01, 0x62, 0x01}
292e18a033bSKonstantin Ananyev    },
293e18a033bSKonstantin Ananyev    {
294e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x3d, 0x00}, {0x06, 0x01, 0x3d, 0x00},
295e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x3d, 0x00}, {0x0f, 0x01, 0x3d, 0x00},
296e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x3d, 0x00}, {0x1f, 0x01, 0x3d, 0x00},
297e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x3d, 0x00}, {0x38, 0x01, 0x3d, 0x01},
298e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x41, 0x00}, {0x06, 0x01, 0x41, 0x00},
299e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x41, 0x00}, {0x0f, 0x01, 0x41, 0x00},
300e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x41, 0x00}, {0x1f, 0x01, 0x41, 0x00},
301e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x41, 0x00}, {0x38, 0x01, 0x41, 0x01}
302e18a033bSKonstantin Ananyev    },
303e18a033bSKonstantin Ananyev    {
304e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x5f, 0x00}, {0x06, 0x01, 0x5f, 0x00},
305e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x5f, 0x00}, {0x0f, 0x01, 0x5f, 0x00},
306e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x5f, 0x00}, {0x1f, 0x01, 0x5f, 0x00},
307e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x5f, 0x00}, {0x38, 0x01, 0x5f, 0x01},
308e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x62, 0x00}, {0x06, 0x01, 0x62, 0x00},
309e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x62, 0x00}, {0x0f, 0x01, 0x62, 0x00},
310e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x62, 0x00}, {0x1f, 0x01, 0x62, 0x00},
311e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x62, 0x00}, {0x38, 0x01, 0x62, 0x01}
312e18a033bSKonstantin Ananyev    },
313e18a033bSKonstantin Ananyev    {
314e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x64, 0x00}, {0x09, 0x01, 0x64, 0x00},
315e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x64, 0x00}, {0x28, 0x01, 0x64, 0x01},
316e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x66, 0x00}, {0x09, 0x01, 0x66, 0x00},
317e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x66, 0x00}, {0x28, 0x01, 0x66, 0x01},
318e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x67, 0x00}, {0x09, 0x01, 0x67, 0x00},
319e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x67, 0x00}, {0x28, 0x01, 0x67, 0x01},
320e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x68, 0x00}, {0x09, 0x01, 0x68, 0x00},
321e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x68, 0x00}, {0x28, 0x01, 0x68, 0x01}
322e18a033bSKonstantin Ananyev    },
323e18a033bSKonstantin Ananyev    {
324e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x64, 0x00}, {0x06, 0x01, 0x64, 0x00},
325e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x64, 0x00}, {0x0f, 0x01, 0x64, 0x00},
326e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x64, 0x00}, {0x1f, 0x01, 0x64, 0x00},
327e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x64, 0x00}, {0x38, 0x01, 0x64, 0x01},
328e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x66, 0x00}, {0x06, 0x01, 0x66, 0x00},
329e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x66, 0x00}, {0x0f, 0x01, 0x66, 0x00},
330e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x66, 0x00}, {0x1f, 0x01, 0x66, 0x00},
331e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x66, 0x00}, {0x38, 0x01, 0x66, 0x01}
332e18a033bSKonstantin Ananyev    },
333e18a033bSKonstantin Ananyev    /* 30 */
334e18a033bSKonstantin Ananyev    {
335e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x67, 0x00}, {0x06, 0x01, 0x67, 0x00},
336e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x67, 0x00}, {0x0f, 0x01, 0x67, 0x00},
337e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x67, 0x00}, {0x1f, 0x01, 0x67, 0x00},
338e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x67, 0x00}, {0x38, 0x01, 0x67, 0x01},
339e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x68, 0x00}, {0x06, 0x01, 0x68, 0x00},
340e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x68, 0x00}, {0x0f, 0x01, 0x68, 0x00},
341e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x68, 0x00}, {0x1f, 0x01, 0x68, 0x00},
342e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x68, 0x00}, {0x38, 0x01, 0x68, 0x01}
343e18a033bSKonstantin Ananyev    },
344e18a033bSKonstantin Ananyev    {
345e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x6c, 0x00}, {0x16, 0x01, 0x6c, 0x01},
346e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x6d, 0x00}, {0x16, 0x01, 0x6d, 0x01},
347e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x6e, 0x00}, {0x16, 0x01, 0x6e, 0x01},
348e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x70, 0x00}, {0x16, 0x01, 0x70, 0x01},
349e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x72, 0x00}, {0x16, 0x01, 0x72, 0x01},
350e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x75, 0x00}, {0x16, 0x01, 0x75, 0x01},
351e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x3a, 0x01}, {0x00, 0x01, 0x42, 0x01},
352e18a033bSKonstantin Ananyev        {0x00, 0x01, 0x43, 0x01}, {0x00, 0x01, 0x44, 0x01}
353e18a033bSKonstantin Ananyev    },
354e18a033bSKonstantin Ananyev    {
355e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x6c, 0x00}, {0x09, 0x01, 0x6c, 0x00},
356e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x6c, 0x00}, {0x28, 0x01, 0x6c, 0x01},
357e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x6d, 0x00}, {0x09, 0x01, 0x6d, 0x00},
358e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x6d, 0x00}, {0x28, 0x01, 0x6d, 0x01},
359e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x6e, 0x00}, {0x09, 0x01, 0x6e, 0x00},
360e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x6e, 0x00}, {0x28, 0x01, 0x6e, 0x01},
361e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x70, 0x00}, {0x09, 0x01, 0x70, 0x00},
362e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x70, 0x00}, {0x28, 0x01, 0x70, 0x01}
363e18a033bSKonstantin Ananyev    },
364e18a033bSKonstantin Ananyev    {
365e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x6c, 0x00}, {0x06, 0x01, 0x6c, 0x00},
366e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x6c, 0x00}, {0x0f, 0x01, 0x6c, 0x00},
367e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x6c, 0x00}, {0x1f, 0x01, 0x6c, 0x00},
368e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x6c, 0x00}, {0x38, 0x01, 0x6c, 0x01},
369e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x6d, 0x00}, {0x06, 0x01, 0x6d, 0x00},
370e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x6d, 0x00}, {0x0f, 0x01, 0x6d, 0x00},
371e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x6d, 0x00}, {0x1f, 0x01, 0x6d, 0x00},
372e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x6d, 0x00}, {0x38, 0x01, 0x6d, 0x01}
373e18a033bSKonstantin Ananyev    },
374e18a033bSKonstantin Ananyev    {
375e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x6e, 0x00}, {0x06, 0x01, 0x6e, 0x00},
376e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x6e, 0x00}, {0x0f, 0x01, 0x6e, 0x00},
377e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x6e, 0x00}, {0x1f, 0x01, 0x6e, 0x00},
378e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x6e, 0x00}, {0x38, 0x01, 0x6e, 0x01},
379e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x70, 0x00}, {0x06, 0x01, 0x70, 0x00},
380e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x70, 0x00}, {0x0f, 0x01, 0x70, 0x00},
381e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x70, 0x00}, {0x1f, 0x01, 0x70, 0x00},
382e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x70, 0x00}, {0x38, 0x01, 0x70, 0x01}
383e18a033bSKonstantin Ananyev    },
384e18a033bSKonstantin Ananyev    /* 35 */
385e18a033bSKonstantin Ananyev    {
386e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x72, 0x00}, {0x09, 0x01, 0x72, 0x00},
387e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x72, 0x00}, {0x28, 0x01, 0x72, 0x01},
388e18a033bSKonstantin Ananyev        {0x02, 0x01, 0x75, 0x00}, {0x09, 0x01, 0x75, 0x00},
389e18a033bSKonstantin Ananyev        {0x17, 0x01, 0x75, 0x00}, {0x28, 0x01, 0x75, 0x01},
390e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x3a, 0x00}, {0x16, 0x01, 0x3a, 0x01},
391e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x42, 0x00}, {0x16, 0x01, 0x42, 0x01},
392e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x43, 0x00}, {0x16, 0x01, 0x43, 0x01},
393e18a033bSKonstantin Ananyev        {0x01, 0x01, 0x44, 0x00}, {0x16, 0x01, 0x44, 0x01}
394e18a033bSKonstantin Ananyev    },
395e18a033bSKonstantin Ananyev    {
396e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x72, 0x00}, {0x06, 0x01, 0x72, 0x00},
397e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x72, 0x00}, {0x0f, 0x01, 0x72, 0x00},
398e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x72, 0x00}, {0x1f, 0x01, 0x72, 0x00},
399e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x72, 0x00}, {0x38, 0x01, 0x72, 0x01},
400e18a033bSKonstantin Ananyev        {0x03, 0x01, 0x75, 0x00}, {0x06, 0x01, 0x75, 0x00},
401e18a033bSKonstantin Ananyev        {0x0a, 0x01, 0x75, 0x00}, {0x0f, 0x01, 0x75, 0x00},
402e18a033bSKonstantin Ananyev        {0x18, 0x01, 0x75, 0x00}, {0x1f, 0x01, 0x75, 0x00},
403e18a033bSKonstantin Ananyev        {0x29, 0x01, 0x75, 0x00}, {0x38, 0x01, 0x75, 0x01}
404e18a033b