26 { 48, 130, 4, 32, 2, 1, 1, 2, 2, 3, 1, 4, 2, 0, 56, 4, 32, 83, 116, 16, 17,
27 57, 108, 197, 133, 94, 141, 239, 83, 184, 65, 171, 17, 90, 82, 17, 245,
28 146, 215, 220, 102, 13, 200, 155, 72, 85, 125, 138, 188, 4, 48, 69, 44, 55,
29 135, 168, 101, 191, 115, 0, 225, 79, 217, 91, 173, 24, 109, 228, 189, 39,
30 192, 112, 237, 37, 92, 27, 110, 49, 224, 110, 108, 96, 55, 131, 177, 124,
31 17, 55, 67, 217, 180, 36, 222, 143, 210, 15, 63, 221, 153, 161, 6, 2, 4,
32 83, 116, 16, 17, 162, 4, 2, 2, 1, 44, 163, 130, 3, 166, 48, 130, 3, 162,
33 48, 130, 2, 138, 2, 5, 17, 17, 17, 17, 24, 48, 13, 6, 9, 42, 134, 72, 134,
34 247, 13, 1, 1, 11, 5, 0, 48, 58, 49, 11, 48, 9, 6, 3, 85, 4, 6, 19, 2, 85,
35 83, 49, 11, 48, 9, 6, 3, 85, 4, 8, 19, 2, 67, 65, 49, 17, 48, 15, 6, 3, 85,
36 4, 10, 19, 8, 70, 97, 99, 101, 98, 111, 111, 107, 49, 11, 48, 9, 6, 3, 85,
37 4, 3, 19, 2, 67, 65, 48, 30, 23, 13, 49, 52, 48, 52, 49, 54, 48, 57, 48,
38 55, 49, 54, 90, 23, 13, 49, 53, 48, 52, 49, 54, 48, 57, 48, 55, 49, 54, 90,
39 48, 91, 49, 11, 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3,
40 85, 4, 8, 19, 2, 85, 83, 49, 17, 48, 15, 6, 3, 85, 4, 10, 19, 8, 102, 97,
41 99, 101, 98, 111, 111, 107, 49, 17, 48, 15, 6, 3, 85, 4, 11, 19, 8, 102,
42 97, 99, 101, 98, 111, 111, 107, 49, 25, 48, 23, 6, 3, 85, 4, 3, 19, 16,
43 119, 119, 119, 46, 102, 97, 99, 101, 98, 111, 111, 107, 46, 99, 111, 109,
44 48, 130, 1, 183, 48, 130, 1, 44, 6, 7, 42, 134, 72, 206, 56, 4, 1, 48, 130,
45 1, 31, 2, 129, 129, 0, 253, 127, 83, 129, 29, 117, 18, 41, 82, 223, 74,
46 156, 46, 236, 228, 231, 246, 17, 183, 82, 60, 239, 68, 0, 195, 30, 63, 128,
47 182, 81, 38, 105, 69, 93, 64, 34, 81, 251, 89, 61, 141, 88, 250, 191, 197,
48 245, 186, 48, 246, 203, 155, 85, 108, 215, 129, 59, 128, 29, 52, 111, 242,
49 102, 96, 183, 107, 153, 80, 165, 164, 159, 159, 232, 4, 123, 16, 34, 194,
50 79, 187, 169, 215, 254, 183, 198, 27, 248, 59, 87, 231, 198, 168, 166, 21,
51 15, 4, 251, 131, 246, 211, 197, 30, 195, 2, 53, 84, 19, 90, 22, 145, 50,
52 246, 117, 243, 174, 43, 97, 215, 42, 239, 242, 34, 3, 25, 157, 209, 72, 1,
53 199, 2, 21, 0, 151, 96, 80, 143, 21, 35, 11, 204, 178, 146, 185, 130, 162,
54 235, 132, 11, 240, 88, 28, 245, 2, 129, 129, 0, 247, 225, 160, 133, 214,
55 155, 61, 222, 203, 188, 171, 92, 54, 184, 87, 185, 121, 148, 175, 187, 250,
56 58, 234, 130, 249, 87, 76, 11, 61, 7, 130, 103, 81, 89, 87, 142, 186, 212,
57 89, 79, 230, 113, 7, 16, 129, 128, 180, 73, 22, 113, 35, 232, 76, 40, 22,
58 19, 183, 207, 9, 50, 140, 200, 166, 225, 60, 22, 122, 139, 84, 124, 141,
59 40, 224, 163, 174, 30, 43, 179, 166, 117, 145, 110, 163, 127, 11, 250, 33,
60 53, 98, 241, 251, 98, 122, 1, 36, 59, 204, 164, 241, 190, 168, 81, 144,
61 137, 168, 131, 223, 225, 90, 229, 159, 6, 146, 139, 102, 94, 128, 123, 85,
62 37, 100, 1, 76, 59, 254, 207, 73, 42, 3, 129, 132, 0, 2, 129, 128, 90, 172,
63 11, 241, 173, 170, 216, 73, 212, 145, 255, 30, 26, 9, 15, 207, 43, 78, 66,
64 19, 239, 76, 26, 190, 227, 22, 242, 109, 46, 46, 175, 215, 254, 22, 160,
65 233, 31, 143, 255, 186, 226, 156, 111, 37, 178, 2, 80, 99, 156, 208, 19,
66 30, 145, 253, 152, 234, 26, 143, 231, 20, 150, 179, 116, 132, 203, 109,
67 223, 242, 208, 57, 177, 77, 163, 224, 210, 110, 60, 227, 221, 123, 5, 129,
68 238, 4, 83, 16, 48, 124, 84, 246, 98, 97, 176, 147, 187, 173, 198, 83, 102,
69 31, 57, 214, 219, 220, 58, 245, 208, 85, 27, 71, 192, 225, 91, 128, 128,
70 216, 116, 30, 45, 116, 67, 66, 185, 183, 215, 145, 219, 155, 48, 13, 6, 9,
71 42, 134, 72, 134, 247, 13, 1, 1, 11, 5, 0, 3, 130, 1, 1, 0, 131, 39, 108,
72 45, 93, 90, 177, 99, 73, 210, 121, 4, 179, 90, 223, 73, 137, 74, 146, 142,
73 26, 230, 134, 5, 79, 159, 26, 82, 139, 69, 223, 55, 208, 181, 136, 250,
74 108, 223, 165, 235, 14, 116, 146, 235, 124, 63, 38, 150, 212, 236, 181, 52,
75 240, 136, 59, 12, 132, 162, 204, 202, 219, 72, 7, 254, 210, 109, 182, 249,
76 126, 61, 55, 37, 82, 169, 198, 234, 134, 85, 10, 98, 51, 232, 239, 92, 216,
77 107, 170, 94, 73, 171, 92, 55, 219, 8, 120, 154, 223, 88, 8, 135, 152, 101,
78 112, 184, 71, 37, 6, 238, 53, 233, 113, 227, 222, 248, 102, 161, 190, 78,
79 163, 170, 23, 48, 8, 222, 1, 30, 233, 251, 161, 246, 246, 90, 51, 151, 158,
80 60, 70, 93, 14, 121, 5, 181, 157, 8, 243, 211, 252, 95, 44, 201, 186, 80,
81 6, 55, 36, 54, 128, 87, 76, 1, 155, 152, 99, 92, 206, 105, 69, 90, 145, 50,
82 121, 14, 40, 70, 52, 217, 246, 244, 142, 176, 221, 202, 32, 78, 189, 229,
83 99, 91, 141, 81, 173, 112, 138, 251, 131, 255, 141, 3, 191, 68, 129, 235,
84 219, 57, 133, 241, 7, 53, 223, 50, 226, 88, 28, 157, 23, 110, 9, 237, 64,
85 67, 60, 77, 74, 110, 177, 130, 204, 41, 52, 57, 121, 103, 93, 154, 248,
86 114, 140, 163, 124, 227, 102, 186, 10, 220, 29, 2, 254, 147, 8, 121, 79, 8,
87 148, 127, 32, 175, 164, 2, 4, 0, 165, 3, 2, 1, 19, },
90 { 48, 130, 4, 32, 2, 1, 1, 2, 2, 3, 1, 4, 2, 0, 56, 4, 32, 83, 116, 20, 234,
91 169, 155, 79, 215, 151, 164, 227, 219, 181, 70, 17, 183, 202, 177, 252, 12,
92 110, 80, 38, 213, 174, 138, 226, 40, 228, 196, 203, 211, 4, 48, 194, 187,
93 205, 1, 145, 36, 175, 197, 202, 233, 209, 23, 191, 235, 94, 55, 73, 32, 40,
94 166, 23, 153, 103, 249, 237, 103, 172, 110, 20, 165, 51, 92, 228, 186, 223,
95 146, 215, 4, 220, 18, 82, 244, 243, 133, 67, 232, 193, 23, 161, 6, 2, 4,
96 83, 116, 20, 235, 162, 4, 2, 2, 1, 44, 163, 130, 3, 166, 48, 130, 3, 162,
97 48, 130, 2, 138, 2, 5, 17, 17, 17, 17, 24, 48, 13, 6, 9, 42, 134, 72, 134,
98 247, 13, 1, 1, 11, 5, 0, 48, 58, 49, 11, 48, 9, 6, 3, 85, 4, 6, 19, 2, 85,
99 83, 49, 11, 48, 9, 6, 3, 85, 4, 8, 19, 2, 67, 65, 49, 17, 48, 15, 6, 3, 85,
100 4, 10, 19, 8, 70, 97, 99, 101, 98, 111, 111, 107, 49, 11, 48, 9, 6, 3, 85,
101 4, 3, 19, 2, 67, 65, 48, 30, 23, 13, 49, 52, 48, 52, 49, 54, 48, 57, 48,
102 55, 49, 54, 90, 23, 13, 49, 53, 48, 52, 49, 54, 48, 57, 48, 55, 49, 54, 90,
103 48, 91, 49, 11, 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3,
104 85, 4, 8, 19, 2, 85, 83, 49, 17, 48, 15, 6, 3, 85, 4, 10, 19, 8, 102, 97,
105 99, 101, 98, 111, 111, 107, 49, 17, 48, 15, 6, 3, 85, 4, 11, 19, 8, 102,
106 97, 99, 101, 98, 111, 111, 107, 49, 25, 48, 23, 6, 3, 85, 4, 3, 19, 16,
107 119, 119, 119, 46, 102, 97, 99, 101, 98, 111, 111, 107, 46, 99, 111, 109,
108 48, 130, 1, 183, 48, 130, 1, 44, 6, 7, 42, 134, 72, 206, 56, 4, 1, 48, 130,
109 1, 31, 2, 129, 129, 0, 253, 127, 83, 129, 29, 117, 18, 41, 82, 223, 74,
110 156, 46, 236, 228, 231, 246, 17, 183, 82, 60, 239, 68, 0, 195, 30, 63, 128,
111 182, 81, 38, 105, 69, 93, 64, 34, 81, 251, 89, 61, 141, 88, 250, 191, 197,
112 245, 186, 48, 246, 203, 155, 85, 108, 215, 129, 59, 128, 29, 52, 111, 242,
113 102, 96, 183, 107, 153, 80, 165, 164, 159, 159, 232, 4, 123, 16, 34, 194,
114 79, 187, 169, 215, 254, 183, 198, 27, 248, 59, 87, 231, 198, 168, 166, 21,
115 15, 4, 251, 131, 246, 211, 197, 30, 195, 2, 53, 84, 19, 90, 22, 145, 50,
116 246, 117, 243, 174, 43, 97, 215, 42, 239, 242, 34, 3, 25, 157, 209, 72, 1,
117 199, 2, 21, 0, 151, 96, 80, 143, 21, 35, 11, 204, 178, 146, 185, 130, 162,
118 235, 132, 11, 240, 88, 28, 245, 2, 129, 129, 0, 247, 225, 160, 133, 214,
119 155, 61, 222, 203, 188, 171, 92, 54, 184, 87, 185, 121, 148, 175, 187, 250,
120 58, 234, 130, 249, 87, 76, 11, 61, 7, 130, 103, 81, 89, 87, 142, 186, 212,
121 89, 79, 230, 113, 7, 16, 129, 128, 180, 73, 22, 113, 35, 232, 76, 40, 22,
122 19, 183, 207, 9, 50, 140, 200, 166, 225, 60, 22, 122, 139, 84, 124, 141,
123 40, 224, 163, 174, 30, 43, 179, 166, 117, 145, 110, 163, 127, 11, 250, 33,
124 53, 98, 241, 251, 98, 122, 1, 36, 59, 204, 164, 241, 190, 168, 81, 144,
125 137, 168, 131, 223, 225, 90, 229, 159, 6, 146, 139, 102, 94, 128, 123, 85,
126 37, 100, 1, 76, 59, 254, 207, 73, 42, 3, 129, 132, 0, 2, 129, 128, 90, 172,
127 11, 241, 173, 170, 216, 73, 212, 145, 255, 30, 26, 9, 15, 207, 43, 78, 66,
128 19, 239, 76, 26, 190, 227, 22, 242, 109, 46, 46, 175, 215, 254, 22, 160,
129 233, 31, 143, 255, 186, 226, 156, 111, 37, 178, 2, 80, 99, 156, 208, 19,
130 30, 145, 253, 152, 234, 26, 143, 231, 20, 150, 179, 116, 132, 203, 109,
131 223, 242, 208, 57, 177, 77, 163, 224, 210, 110, 60, 227, 221, 123, 5, 129,
132 238, 4, 83, 16, 48, 124, 84, 246, 98, 97, 176, 147, 187, 173, 198, 83, 102,
133 31, 57, 214, 219, 220, 58, 245, 208, 85, 27, 71, 192, 225, 91, 128, 128,
134 216, 116, 30, 45, 116, 67, 66, 185, 183, 215, 145, 219, 155, 48, 13, 6, 9,
135 42, 134, 72, 134, 247, 13, 1, 1, 11, 5, 0, 3, 130, 1, 1, 0, 131, 39, 108,
136 45, 93, 90, 177, 99, 73, 210, 121, 4, 179, 90, 223, 73, 137, 74, 146, 142,
137 26, 230, 134, 5, 79, 159, 26, 82, 139, 69, 223, 55, 208, 181, 136, 250,
138 108, 223, 165, 235, 14, 116, 146, 235, 124, 63, 38, 150, 212, 236, 181, 52,
139 240, 136, 59, 12, 132, 162, 204, 202, 219, 72, 7, 254, 210, 109, 182, 249,
140 126, 61, 55, 37, 82, 169, 198, 234, 134, 85, 10, 98, 51, 232, 239, 92, 216,
141 107, 170, 94, 73, 171, 92, 55, 219, 8, 120, 154, 223, 88, 8, 135, 152, 101,
142 112, 184, 71, 37, 6, 238, 53, 233, 113, 227, 222, 248, 102, 161, 190, 78,
143 163, 170, 23, 48, 8, 222, 1, 30, 233, 251, 161, 246, 246, 90, 51, 151, 158,
144 60, 70, 93, 14, 121, 5, 181, 157, 8, 243, 211, 252, 95, 44, 201, 186, 80,
145 6, 55, 36, 54, 128, 87, 76, 1, 155, 152, 99, 92, 206, 105, 69, 90, 145, 50,
146 121, 14, 40, 70, 52, 217, 246, 244, 142, 176, 221, 202, 32, 78, 189, 229,
147 99, 91, 141, 81, 173, 112, 138, 251, 131, 255, 141, 3, 191, 68, 129, 235,
148 219, 57, 133, 241, 7, 53, 223, 50, 226, 88, 28, 157, 23, 110, 9, 237, 64,
149 67, 60, 77, 74, 110, 177, 130, 204, 41, 52, 57, 121, 103, 93, 154, 248,
150 114, 140, 163, 124, 227, 102, 186, 10, 220, 29, 2, 254, 147, 8, 121, 79, 8,
151 148, 127, 32, 175, 164, 2, 4, 0, 165, 3, 2, 1, 19, },
154 { 48, 130, 4, 32, 2, 1, 1, 2, 2, 3, 1, 4, 2, 0, 56, 4, 32, 83, 116, 21, 50,
155 186, 222, 2, 46, 159, 227, 91, 165, 32, 209, 124, 156, 57, 111, 20, 98,
156 150, 88, 20, 242, 184, 169, 64, 24, 105, 185, 128, 62, 4, 48, 16, 7, 108,
157 47, 93, 126, 249, 205, 90, 168, 186, 194, 74, 148, 7, 106, 242, 3, 174,
158 174, 164, 134, 24, 159, 195, 191, 86, 10, 212, 217, 14, 156, 50, 157, 112,
159 31, 226, 222, 41, 182, 130, 235, 245, 191, 254, 5, 206, 236, 161, 6, 2, 4,
160 83, 116, 21, 50, 162, 4, 2, 2, 1, 44, 163, 130, 3, 166, 48, 130, 3, 162,
161 48, 130, 2, 138, 2, 5, 17, 17, 17, 17, 24, 48, 13, 6, 9, 42, 134, 72, 134,
162 247, 13, 1, 1, 11, 5, 0, 48, 58, 49, 11, 48, 9, 6, 3, 85, 4, 6, 19, 2, 85,
163 83, 49, 11, 48, 9, 6, 3, 85, 4, 8, 19, 2, 67, 65, 49, 17, 48, 15, 6, 3, 85,
164 4, 10, 19, 8, 70, 97, 99, 101, 98, 111, 111, 107, 49, 11, 48, 9, 6, 3, 85,
165 4, 3, 19, 2, 67, 65, 48, 30, 23, 13, 49, 52, 48, 52, 49, 54, 48, 57, 48,
166 55, 49, 54, 90, 23, 13, 49, 53, 48, 52, 49, 54, 48, 57, 48, 55, 49, 54, 90,
167 48, 91, 49, 11, 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3,
168 85, 4, 8, 19, 2, 85, 83, 49, 17, 48, 15, 6, 3, 85, 4, 10, 19, 8, 102, 97,
169 99, 101, 98, 111, 111, 107, 49, 17, 48, 15, 6, 3, 85, 4, 11, 19, 8, 102,
170 97, 99, 101, 98, 111, 111, 107, 49, 25, 48, 23, 6, 3, 85, 4, 3, 19, 16,
171 119, 119, 119, 46, 102, 97, 99, 101, 98, 111, 111, 107, 46, 99, 111, 109,
172 48, 130, 1, 183, 48, 130, 1, 44, 6, 7, 42, 134, 72, 206, 56, 4, 1, 48, 130,
173 1, 31, 2, 129, 129, 0, 253, 127, 83, 129, 29, 117, 18, 41, 82, 223, 74,
174 156, 46, 236, 228, 231, 246, 17, 183, 82, 60, 239, 68, 0, 195, 30, 63, 128,
175 182, 81, 38, 105, 69, 93, 64, 34, 81, 251, 89, 61, 141, 88, 250, 191, 197,
176 245, 186, 48, 246, 203, 155, 85, 108, 215, 129, 59, 128, 29, 52, 111, 242,
177 102, 96, 183, 107, 153, 80, 165, 164, 159, 159, 232, 4, 123, 16, 34, 194,
178 79, 187, 169, 215, 254, 183, 198, 27, 248, 59, 87, 231, 198, 168, 166, 21,
179 15, 4, 251, 131, 246, 211, 197, 30, 195, 2, 53, 84, 19, 90, 22, 145, 50,
180 246, 117, 243, 174, 43, 97, 215, 42, 239, 242, 34, 3, 25, 157, 209, 72, 1,
181 199, 2, 21, 0, 151, 96, 80, 143, 21, 35, 11, 204, 178, 146, 185, 130, 162,
182 235, 132, 11, 240, 88, 28, 245, 2, 129, 129, 0, 247, 225, 160, 133, 214,
183 155, 61, 222, 203, 188, 171, 92, 54, 184, 87, 185, 121, 148, 175, 187, 250,
184 58, 234, 130, 249, 87, 76, 11, 61, 7, 130, 103, 81, 89, 87, 142, 186, 212,
185 89, 79, 230, 113, 7, 16, 129, 128, 180, 73, 22, 113, 35, 232, 76, 40, 22,
186 19, 183, 207, 9, 50, 140, 200, 166, 225, 60, 22, 122, 139, 84, 124, 141,
187 40, 224, 163, 174, 30, 43, 179, 166, 117, 145, 110, 163, 127, 11, 250, 33,
188 53, 98, 241, 251, 98, 122, 1, 36, 59, 204, 164, 241, 190, 168, 81, 144,
189 137, 168, 131, 223, 225, 90, 229, 159, 6, 146, 139, 102, 94, 128, 123, 85,
190 37, 100, 1, 76, 59, 254, 207, 73, 42, 3, 129, 132, 0, 2, 129, 128, 90, 172,
191 11, 241, 173, 170, 216, 73, 212, 145, 255, 30, 26, 9, 15, 207, 43, 78, 66,
192 19, 239, 76, 26, 190, 227, 22, 242, 109, 46, 46, 175, 215, 254, 22, 160,
193 233, 31, 143, 255, 186, 226, 156, 111, 37, 178, 2, 80, 99, 156, 208, 19,
194 30, 145, 253, 152, 234, 26, 143, 231, 20, 150, 179, 116, 132, 203, 109,
195 223, 242, 208, 57, 177, 77, 163, 224, 210, 110, 60, 227, 221, 123, 5, 129,
196 238, 4, 83, 16, 48, 124, 84, 246, 98, 97, 176, 147, 187, 173, 198, 83, 102,
197 31, 57, 214, 219, 220, 58, 245, 208, 85, 27, 71, 192, 225, 91, 128, 128,
198 216, 116, 30, 45, 116, 67, 66, 185, 183, 215, 145, 219, 155, 48, 13, 6, 9,
199 42, 134, 72, 134, 247, 13, 1, 1, 11, 5, 0, 3, 130, 1, 1, 0, 131, 39, 108,
200 45, 93, 90, 177, 99, 73, 210, 121, 4, 179, 90, 223, 73, 137, 74, 146, 142,
201 26, 230, 134, 5, 79, 159, 26, 82, 139, 69, 223, 55, 208, 181, 136, 250,
202 108, 223, 165, 235, 14, 116, 146, 235, 124, 63, 38, 150, 212, 236, 181, 52,
203 240, 136, 59, 12, 132, 162, 204, 202, 219, 72, 7, 254, 210, 109, 182, 249,
204 126, 61, 55, 37, 82, 169, 198, 234, 134, 85, 10, 98, 51, 232, 239, 92, 216,
205 107, 170, 94, 73, 171, 92, 55, 219, 8, 120, 154, 223, 88, 8, 135, 152, 101,
206 112, 184, 71, 37, 6, 238, 53, 233, 113, 227, 222, 248, 102, 161, 190, 78,
207 163, 170, 23, 48, 8, 222, 1, 30, 233, 251, 161, 246, 246, 90, 51, 151, 158,
208 60, 70, 93, 14, 121, 5, 181, 157, 8, 243, 211, 252, 95, 44, 201, 186, 80,
209 6, 55, 36, 54, 128, 87, 76, 1, 155, 152, 99, 92, 206, 105, 69, 90, 145, 50,
210 121, 14, 40, 70, 52, 217, 246, 244, 142, 176, 221, 202, 32, 78, 189, 229,
211 99, 91, 141, 81, 173, 112, 138, 251, 131, 255, 141, 3, 191, 68, 129, 235,
212 219, 57, 133, 241, 7, 53, 223, 50, 226, 88, 28, 157, 23, 110, 9, 237, 64,
213 67, 60, 77, 74, 110, 177, 130, 204, 41, 52, 57, 121, 103, 93, 154, 248,
214 114, 140, 163, 124, 227, 102, 186, 10, 220, 29, 2, 254, 147, 8, 121, 79, 8,
215 148, 127, 32, 175, 164, 2, 4, 0, 165, 3, 2, 1, 19, }
219 1, 2, 2, 3, 3, 4, 2, 192, 43, 4, 32, 210, 43, 250, 203, 148, 216, 240,
220 105, 223, 166, 40, 126, 54, 36, 175, 185, 214, 213, 114, 48, 50, 202,
221 82, 158, 6, 141, 149, 181, 31, 38, 204, 204, 4, 48, 250, 59, 244, 243,
222 75, 147, 73, 231, 212, 166, 183, 110, 166, 214, 93, 88, 225, 229, 155,
223 123, 11, 207, 190, 196, 25, 198, 36, 252, 71, 218, 12, 67, 161, 25,
224 240, 28, 141, 251, 176, 240, 170, 122, 162, 200, 157, 0, 220, 217,
225 161, 6, 2, 4, 85, 186, 198, 92, 162, 4, 2, 2, 1, 44, 163, 130, 4, 235,
226 48, 130, 4, 231, 48, 130, 3, 207, 160, 3, 2, 1, 2, 2, 16, 4, 200, 173,
227 121, 70, 20, 4, 241, 110, 145, 123, 2, 222, 229, 117, 116, 48, 13, 6,
228 9, 42, 134, 72, 134, 247, 13, 1, 1, 5, 5, 0, 48, 102, 49, 11, 48, 9,
229 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 21, 48, 19, 6, 3, 85, 4, 10, 19,
230 12, 68, 105, 103, 105, 67, 101, 114, 116, 32, 73, 110, 99, 49, 25, 48,
231 23, 6, 3, 85, 4, 11, 19, 16, 119, 119, 119, 46, 100, 105, 103, 105,
232 99, 101, 114, 116, 46, 99, 111, 109, 49, 37, 48, 35, 6, 3, 85, 4, 3,
233 19, 28, 68, 105, 103, 105, 67, 101, 114, 116, 32, 72, 105, 103, 104,
234 32, 65, 115, 115, 117, 114, 97, 110, 99, 101, 32, 67, 65, 45, 51, 48,
235 30, 23, 13, 49, 52, 48, 56, 50, 56, 48, 48, 48, 48, 48, 48, 90, 23,
236 13, 49, 53, 49, 48, 49, 53, 49, 50, 48, 48, 48, 48, 90, 48, 97, 49,
237 11, 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 4,
238 8, 19, 2, 67, 65, 49, 19, 48, 17, 6, 3, 85, 4, 7, 19, 10, 77, 101,
239 110, 108, 111, 32, 80, 97, 114, 107, 49, 23, 48, 21, 6, 3, 85, 4, 10,
240 19, 14, 70, 97, 99, 101, 98, 111, 111, 107, 44, 32, 73, 110, 99, 46,
241 49, 23, 48, 21, 6, 3, 85, 4, 3, 12, 14, 42, 46, 102, 97, 99, 101, 98,
242 111, 111, 107, 46, 99, 111, 109, 48, 89, 48, 19, 6, 7, 42, 134, 72,
243 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 3, 66, 0, 4, 216,
244 209, 221, 53, 189, 226, 89, 182, 251, 155, 31, 84, 21, 140, 219, 191,
245 78, 88, 189, 71, 190, 184, 16, 252, 34, 233, 210, 158, 152, 248, 73,
246 42, 37, 251, 148, 70, 228, 66, 153, 132, 80, 28, 95, 1, 253, 20, 37,
247 49, 92, 78, 217, 100, 253, 197, 12, 179, 70, 210, 161, 188, 112, 180,
248 135, 142, 163, 130, 2, 95, 48, 130, 2, 91, 48, 31, 6, 3, 85, 29, 35,
249 4, 24, 48, 22, 128, 20, 80, 234, 115, 137, 219, 41, 251, 16, 143, 158,
250 229, 1, 32, 212, 222, 121, 153, 72, 131, 247, 48, 29, 6, 3, 85, 29,
251 14, 4, 22, 4, 20, 67, 9, 147, 64, 250, 17, 75, 48, 51, 236, 242, 135,
252 110, 141, 113, 24, 207, 138, 188, 142, 48, 129, 183, 6, 3, 85, 29, 17,
253 4, 129, 175, 48, 129, 172, 130, 14, 42, 46, 102, 97, 99, 101, 98, 111,
254 111, 107, 46, 99, 111, 109, 130, 12, 102, 97, 99, 101, 98, 111, 111,
255 107, 46, 99, 111, 109, 130, 8, 42, 46, 102, 98, 46, 99, 111, 109, 130,
256 6, 102, 98, 46, 99, 111, 109, 130, 11, 42, 46, 102, 98, 115, 98, 120,
257 46, 99, 111, 109, 130, 11, 42, 46, 102, 98, 99, 100, 110, 46, 110,
258 101, 116, 130, 14, 42, 46, 120, 120, 46, 102, 98, 99, 100, 110, 46,
259 110, 101, 116, 130, 14, 42, 46, 120, 121, 46, 102, 98, 99, 100, 110,
260 46, 110, 101, 116, 130, 14, 42, 46, 120, 122, 46, 102, 98, 99, 100,
261 110, 46, 110, 101, 116, 130, 16, 42, 46, 109, 46, 102, 97, 99, 101,
262 98, 111, 111, 107, 46, 99, 111, 109, 130, 15, 42, 46, 109, 101, 115,
263 115, 101, 110, 103, 101, 114, 46, 99, 111, 109, 130, 13, 109, 101,
264 115, 115, 101, 110, 103, 101, 114, 46, 99, 111, 109, 48, 14, 6, 3, 85,
265 29, 15, 1, 1, 255, 4, 4, 3, 2, 3, 136, 48, 29, 6, 3, 85, 29, 37, 4,
266 22, 48, 20, 6, 8, 43, 6, 1, 5, 5, 7, 3, 1, 6, 8, 43, 6, 1, 5, 5, 7, 3,
267 2, 48, 97, 6, 3, 85, 29, 31, 4, 90, 48, 88, 48, 42, 160, 40, 160, 38,
268 134, 36, 104, 116, 116, 112, 58, 47, 47, 99, 114, 108, 51, 46, 100,
269 105, 103, 105, 99, 101, 114, 116, 46, 99, 111, 109, 47, 99, 97, 51,
270 45, 103, 50, 57, 46, 99, 114, 108, 48, 42, 160, 40, 160, 38, 134, 36,
271 104, 116, 116, 112, 58, 47, 47, 99, 114, 108, 52, 46, 100, 105, 103,
272 105, 99, 101, 114, 116, 46, 99, 111, 109, 47, 99, 97, 51, 45, 103, 50,
273 57, 46, 99, 114, 108, 48, 66, 6, 3, 85, 29, 32, 4, 59, 48, 57, 48, 55,
274 6, 9, 96, 134, 72, 1, 134, 253, 108, 1, 1, 48, 42, 48, 40, 6, 8, 43,
275 6, 1, 5, 5, 7, 2, 1, 22, 28, 104, 116, 116, 112, 115, 58, 47, 47, 119,
276 119, 119, 46, 100, 105, 103, 105, 99, 101, 114, 116, 46, 99, 111, 109,
277 47, 67, 80, 83, 48, 123, 6, 8, 43, 6, 1, 5, 5, 7, 1, 1, 4, 111, 48,
278 109, 48, 36, 6, 8, 43, 6, 1, 5, 5, 7, 48, 1, 134, 24, 104, 116, 116,
279 112, 58, 47, 47, 111, 99, 115, 112, 46, 100, 105, 103, 105, 99, 101,
280 114, 116, 46, 99, 111, 109, 48, 69, 6, 8, 43, 6, 1, 5, 5, 7, 48, 2,
281 134, 57, 104, 116, 116, 112, 58, 47, 47, 99, 97, 99, 101, 114, 116,
282 115, 46, 100, 105, 103, 105, 99, 101, 114, 116, 46, 99, 111, 109, 47,
283 68, 105, 103, 105, 67, 101, 114, 116, 72, 105, 103, 104, 65, 115, 115,
284 117, 114, 97, 110, 99, 101, 67, 65, 45, 51, 46, 99, 114, 116, 48, 12,
285 6, 3, 85, 29, 19, 1, 1, 255, 4, 2, 48, 0, 48, 13, 6, 9, 42, 134, 72,
286 134, 247, 13, 1, 1, 5, 5, 0, 3, 130, 1, 1, 0, 157, 209, 176, 90, 7,
287 249, 48, 235, 219, 240, 17, 203, 96, 137, 113, 197, 247, 246, 48, 88,
288 238, 215, 180, 84, 206, 55, 183, 72, 120, 84, 88, 175, 143, 167, 196,
289 89, 207, 250, 14, 77, 239, 138, 81, 224, 245, 184, 241, 31, 89, 208,
290 174, 115, 198, 37, 201, 209, 242, 243, 214, 218, 32, 165, 166, 51,
291 139, 239, 115, 70, 87, 44, 185, 94, 194, 231, 135, 139, 181, 86, 148,
292 224, 6, 2, 196, 163, 23, 82, 227, 111, 119, 202, 161, 225, 46, 132,
293 196, 125, 89, 25, 143, 6, 135, 112, 3, 220, 88, 50, 81, 74, 86, 207,
294 231, 56, 24, 81, 183, 4, 22, 149, 149, 110, 54, 107, 115, 81, 102,
295 141, 212, 123, 12, 209, 196, 106, 76, 241, 247, 153, 161, 181, 97,
296 164, 18, 241, 47, 82, 228, 213, 44, 109, 120, 89, 20, 106, 88, 24,
297 233, 188, 176, 10, 26, 120, 174, 156, 60, 99, 155, 85, 75, 233, 181,
298 220, 69, 236, 69, 39, 245, 235, 73, 122, 237, 230, 91, 28, 14, 109,
299 172, 218, 93, 28, 229, 19, 8, 182, 172, 141, 32, 249, 157, 112, 220,
300 5, 193, 14, 79, 95, 39, 133, 217, 31, 175, 73, 208, 35, 116, 246, 160,
301 165, 237, 245, 64, 233, 24, 246, 41, 111, 70, 145, 149, 122, 74, 247,
302 44, 124, 88, 99, 189, 38, 249, 140, 24, 85, 98, 83, 21, 180, 77, 0,
303 184, 151, 155, 188, 158, 192, 61, 221, 165, 133, 164, 2, 4, 0, 166,
304 18, 4, 16, 119, 119, 119, 46, 102, 97, 99, 101, 98, 111, 111, 107, 46,
305 99, 111, 109, 169, 5, 2, 3, 1, 79, 240, 170, 129, 195, 4, 129, 192,
306 238, 5, 167, 149, 22, 69, 66, 195, 66, 199, 37, 228, 51, 14, 95, 148,
307 40, 81, 237, 132, 113, 140, 5, 50, 55, 161, 254, 160, 244, 140, 46,
308 231, 248, 101, 230, 101, 175, 234, 52, 102, 99, 68, 140, 16, 65, 116,
309 229, 170, 73, 57, 98, 118, 137, 190, 223, 253, 122, 21, 140, 29, 20,
310 4, 175, 198, 205, 110, 205, 178, 203, 55, 14, 70, 56, 216, 120, 167,
311 110, 214, 198, 182, 221, 2, 141, 36, 136, 43, 22, 34, 67, 91, 152,
312 244, 30, 155, 1, 140, 23, 183, 205, 200, 98, 56, 41, 17, 172, 213,
313 180, 37, 111, 49, 150, 123, 35, 199, 252, 234, 228, 6, 202, 113, 194,
314 171, 32, 55, 104, 75, 158, 140, 100, 80, 57, 2, 49, 70, 34, 85, 183,
315 32, 172, 6, 113, 154, 113, 48, 221, 18, 27, 250, 53, 48, 209, 28, 187,
316 83, 215, 149, 231, 36, 115, 174, 116, 13, 217, 199, 167, 38, 222, 204,
317 0, 175, 80, 31, 26, 253, 119, 182, 235, 242, 67, 248, 105, 119, 45,
318 29, 2, 69, 80, 162, 186, 96, 175, 100 };
321 std::vector<std::pair<SSL_SESSION*, size_t>> sessions;
324 const unsigned char* p = kSessionData[
i];
325 auto s = d2i_SSL_SESSION(
nullptr, &p, kSessionDataLen);
326 CHECK(
s) <<
"Invalid session " <<
i;
327 sessions.emplace_back(
s, kSessionDataLen);
343 auto s = d2i_SSL_SESSION(
nullptr, &p, sessionDataWithTicketLen);
345 std::make_pair(
s, sessionDataWithTicketLen),
346 std::make_pair(
s, sessionDataWithTicketLen)));
347 return std::make_pair(
s, sessionDataWithTicketLen);
351 std::pair<SSL_SESSION*, size_t> session) {
354 SSL_SESSION_up_ref(session.first);
360 std::unique_ptr<unsigned char[]>
361 sessionData(
new unsigned char[expectedLength]);
362 auto p = sessionData.get();
363 auto len = (size_t)i2d_SSL_SESSION(s, &p);
364 CHECK(expectedLength == len);
365 return std::string(reinterpret_cast<const char*>(sessionData.get()), len);
369 std::pair<SSL_SESSION*, size_t> lhs,
370 std::pair<SSL_SESSION*, size_t>
rhs) {
const size_t kNumSessions
SSLSessionPtr createPersistentTestSession(std::pair< SSL_SESSION *, size_t > session)
const size_t kSessionDataLen
bool isSameSession(std::pair< SSL_SESSION *, size_t > lhs, std::pair< SSL_SESSION *, size_t > rhs)
FOLLY_PUSH_WARNING RHS rhs
std::unique_ptr< SSL_SESSION, SessionDestructor > SSLSessionPtr
std::vector< std::pair< SSL_SESSION *, size_t > > getSessions()
const unsigned char kSessionData[kNumSessions][kSessionDataLen]
const unsigned char kSessionDataWithTicket[]
std::string getSessionData(SSL_SESSION *s, size_t expectedLength)
std::pair< SSL_SESSION *, size_t > getSessionWithTicket()