Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zzha zzha
OpenXG-RAN
Commits
34746b24
Commit
34746b24
authored
Jan 05, 2018
by
wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update ldpc encoder segmentation
parent
0b5394b5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
75 additions
and
37 deletions
+75
-37
openair1/PHY/CODING/Gen_shift_value.h
openair1/PHY/CODING/Gen_shift_value.h
+1
-0
openair1/PHY/CODING/defs.h
openair1/PHY/CODING/defs.h
+3
-2
openair1/PHY/CODING/ldpc_encoder.c
openair1/PHY/CODING/ldpc_encoder.c
+52
-23
openair1/PHY/CODING/nr_segmentation.c
openair1/PHY/CODING/nr_segmentation.c
+19
-12
No files found.
openair1/PHY/CODING/Gen_shift_value.h
View file @
34746b24
...
@@ -65,4 +65,5 @@ short Gen_shift_values_BG2_a_11[1483]={155,16,97,142,167,52,13,173,2,64,106,62,8
...
@@ -65,4 +65,5 @@ short Gen_shift_values_BG2_a_11[1483]={155,16,97,142,167,52,13,173,2,64,106,62,8
short
Gen_shift_values_BG2_a_13
[
1483
]
=
{
142
,
17
,
125
,
18
,
162
,
35
,
175
,
47
,
164
,
26
,
46
,
2
,
182
,
17
,
101
,
110
,
195
,
184
,
202
,
16
,
2
,
13
,
131
,
190
,
12
,
179
,
159
,
143
,
142
,
17
,
125
,
19
,
18
,
162
,
35
,
176
,
175
,
47
,
165
,
164
,
26
,
46
,
2
,
182
,
17
,
101
,
110
,
196
,
195
,
184
,
202
,
16
,
2
,
13
,
131
,
190
,
13
,
12
,
179
,
159
,
143
,
142
,
18
,
17
,
125
,
19
,
18
,
162
,
35
,
176
,
175
,
47
,
165
,
164
,
27
,
26
,
46
,
3
,
2
,
182
,
17
,
102
,
101
,
110
,
196
,
195
,
185
,
184
,
202
,
17
,
16
,
2
,
14
,
13
,
131
,
190
,
13
,
12
,
180
,
179
,
159
,
142
,
17
,
125
,
18
,
162
,
36
,
35
,
175
,
48
,
47
,
164
,
26
,
46
,
2
,
182
,
18
,
17
,
101
,
111
,
110
,
195
,
184
,
203
,
202
,
16
,
3
,
2
,
13
,
131
,
191
,
190
,
12
,
179
,
160
,
159
,
260
,
259
,
134
,
242
,
43
,
136
,
135
,
279
,
152
,
27
,
293
,
292
,
164
,
282
,
281
,
143
,
163
,
119
,
299
,
134
,
218
,
227
,
313
,
312
,
301
,
319
,
133
,
119
,
130
,
248
,
307
,
130
,
129
,
296
,
276
,
205
,
204
,
79
,
187
,
136
,
81
,
80
,
224
,
97
,
49
,
238
,
237
,
109
,
227
,
226
,
88
,
108
,
64
,
244
,
79
,
163
,
172
,
36
,
258
,
257
,
246
,
264
,
78
,
64
,
132
,
75
,
193
,
252
,
75
,
74
,
241
,
221
,
155
,
154
,
29
,
137
,
7
,
31
,
30
,
174
,
47
,
188
,
187
,
59
,
177
,
176
,
38
,
58
,
14
,
194
,
29
,
113
,
122
,
34
,
208
,
207
,
196
,
214
,
28
,
14
,
198
,
25
,
143
,
202
,
25
,
24
,
191
,
171
,
168
,
250
,
249
,
200
,
124
,
75
,
232
,
183
,
126
,
125
,
76
,
269
,
220
,
142
,
94
,
93
,
163
,
283
,
282
,
233
,
154
,
106
,
105
,
272
,
271
,
222
,
133
,
84
,
153
,
104
,
109
,
60
,
289
,
240
,
124
,
76
,
75
,
208
,
159
,
217
,
169
,
168
,
78
,
303
,
302
,
253
,
291
,
242
,
309
,
261
,
260
,
123
,
74
,
109
,
61
,
60
,
143
,
120
,
71
,
238
,
189
,
297
,
249
,
248
,
120
,
119
,
70
,
286
,
237
,
266
,
218
,
217
,
165
,
164
,
40
,
39
,
147
,
101
,
41
,
40
,
184
,
57
,
177
,
198
,
197
,
69
,
187
,
186
,
49
,
48
,
68
,
25
,
24
,
204
,
39
,
124
,
123
,
132
,
218
,
217
,
207
,
206
,
224
,
39
,
38
,
24
,
36
,
35
,
153
,
212
,
35
,
34
,
202
,
201
,
181
,
347
,
224
,
223
,
222
,
98
,
330
,
206
,
223
,
100
,
99
,
367
,
243
,
240
,
116
,
186
,
380
,
257
,
256
,
252
,
128
,
369
,
246
,
245
,
231
,
107
,
251
,
127
,
207
,
83
,
387
,
263
,
222
,
98
,
306
,
182
,
315
,
191
,
400
,
277
,
276
,
389
,
265
,
407
,
283
,
221
,
97
,
207
,
83
,
218
,
94
,
336
,
212
,
395
,
271
,
27
,
217
,
94
,
93
,
384
,
260
,
364
,
240
,
125
,
60
,
177
,
51
,
150
,
25
,
133
,
39
,
26
,
170
,
44
,
43
,
183
,
56
,
55
,
172
,
34
,
54
,
10
,
190
,
26
,
25
,
109
,
119
,
118
,
203
,
192
,
211
,
210
,
24
,
11
,
10
,
29
,
21
,
139
,
199
,
198
,
20
,
187
,
168
,
167
,
35
,
192
,
191
,
66
,
174
,
68
,
67
,
211
,
84
,
18
,
225
,
224
,
96
,
214
,
213
,
75
,
95
,
155
,
51
,
231
,
66
,
150
,
159
,
245
,
244
,
233
,
251
,
65
,
51
,
62
,
180
,
239
,
62
,
61
,
228
,
208
,
328
,
203
,
311
,
32
,
204
,
348
,
222
,
221
,
53
,
361
,
234
,
233
,
350
,
212
,
232
,
188
,
368
,
204
,
203
,
287
,
297
,
296
,
381
,
370
,
389
,
388
,
202
,
189
,
188
,
199
,
317
,
377
,
376
,
95
,
198
,
365
,
346
,
345
,
195
,
194
,
251
,
69
,
126
,
177
,
234
,
71
,
70
,
127
,
214
,
271
,
87
,
145
,
144
,
91
,
228
,
227
,
284
,
99
,
157
,
156
,
217
,
216
,
273
,
78
,
135
,
98
,
155
,
54
,
111
,
234
,
291
,
69
,
127
,
126
,
153
,
210
,
162
,
220
,
219
,
248
,
247
,
304
,
236
,
293
,
254
,
312
,
311
,
20
,
68
,
125
,
54
,
112
,
111
,
65
,
122
,
183
,
240
,
242
,
300
,
299
,
65
,
64
,
121
,
231
,
288
,
211
,
269
,
268
,
250
,
245
,
244
,
125
,
119
,
233
,
227
,
174
,
126
,
121
,
120
,
270
,
264
,
143
,
137
,
283
,
278
,
277
,
155
,
149
,
272
,
267
,
266
,
134
,
128
,
154
,
148
,
110
,
104
,
290
,
284
,
125
,
119
,
209
,
203
,
218
,
212
,
303
,
298
,
297
,
292
,
286
,
310
,
304
,
124
,
118
,
110
,
104
,
121
,
115
,
239
,
233
,
298
,
292
,
120
,
115
,
114
,
287
,
281
,
267
,
261
,
197
,
196
,
319
,
318
,
71
,
194
,
193
,
179
,
301
,
73
,
72
,
195
,
194
,
216
,
338
,
89
,
211
,
125
,
230
,
229
,
352
,
351
,
101
,
223
,
219
,
218
,
341
,
340
,
80
,
203
,
202
,
100
,
222
,
56
,
179
,
178
,
236
,
358
,
71
,
193
,
155
,
278
,
277
,
164
,
286
,
250
,
249
,
372
,
371
,
238
,
361
,
360
,
256
,
378
,
70
,
193
,
192
,
56
,
178
,
67
,
190
,
189
,
185
,
307
,
244
,
366
,
67
,
66
,
189
,
188
,
233
,
356
,
355
,
213
,
335
,
31
,
285
,
284
,
178
,
177
,
159
,
53
,
52
,
267
,
160
,
161
,
160
,
54
,
53
,
304
,
197
,
177
,
70
,
57
,
318
,
317
,
211
,
210
,
189
,
82
,
307
,
306
,
200
,
199
,
168
,
62
,
61
,
188
,
81
,
144
,
38
,
37
,
324
,
217
,
159
,
52
,
243
,
137
,
136
,
252
,
145
,
201
,
338
,
337
,
231
,
230
,
326
,
220
,
219
,
344
,
237
,
158
,
52
,
51
,
144
,
37
,
155
,
49
,
48
,
273
,
166
,
332
,
225
,
155
,
154
,
48
,
47
,
321
,
215
,
214
,
301
,
194
,
129
,
203
,
140
,
194
,
69
,
177
,
110
,
70
,
214
,
87
,
124
,
227
,
99
,
216
,
78
,
98
,
54
,
234
,
69
,
153
,
162
,
247
,
236
,
254
,
68
,
54
,
65
,
183
,
242
,
64
,
231
,
211
,
257
,
256
,
131
,
239
,
133
,
132
,
276
,
149
,
196
,
290
,
289
,
161
,
279
,
278
,
140
,
160
,
116
,
296
,
131
,
35
,
215
,
224
,
310
,
309
,
298
,
316
,
130
,
116
,
127
,
245
,
304
,
127
,
126
,
293
,
273
,
165
,
40
,
148
,
10
,
41
,
185
,
59
,
58
,
198
,
71
,
70
,
187
,
49
,
69
,
25
,
205
,
41
,
40
,
124
,
134
,
133
,
218
,
207
,
226
,
225
,
39
,
26
,
25
,
36
,
154
,
214
,
213
,
122
,
35
,
202
,
183
,
182
,
202
,
126
,
52
,
170
,
13
,
113
,
161
,
88
,
197
,
194
,
192
,
191
,
303
,
67
,
66
,
178
,
174
,
286
,
68
,
67
,
179
,
211
,
323
,
84
,
197
,
196
,
225
,
224
,
336
,
96
,
209
,
208
,
164
,
214
,
213
,
325
,
76
,
75
,
187
,
95
,
207
,
52
,
51
,
163
,
231
,
343
,
66
,
179
,
178
,
151
,
150
,
262
,
159
,
272
,
271
,
245
,
244
,
356
,
234
,
233
,
345
,
251
,
364
,
363
,
66
,
65
,
177
,
51
,
164
,
163
,
172
,
63
,
62
,
174
,
180
,
292
,
239
,
352
,
351
,
62
,
61
,
173
,
229
,
228
,
340
,
208
,
321
,
320
,
168
,
193
,
14
,
186
,
46
,
50
,
27
,
70
,
17
,
50
,
6
,
331
,
206
,
314
,
207
,
351
,
225
,
224
,
115
,
364
,
237
,
236
,
353
,
215
,
235
,
191
,
371
,
207
,
206
,
290
,
300
,
299
,
384
,
373
,
392
,
391
,
205
,
192
,
191
,
202
,
320
,
380
,
379
,
201
,
368
,
349
,
348
,
306
,
305
,
181
,
180
,
288
,
110
,
182
,
181
,
325
,
198
,
339
,
338
,
210
,
328
,
327
,
190
,
189
,
209
,
166
,
165
,
345
,
180
,
265
,
264
,
273
,
0
,
359
,
358
,
348
,
347
,
365
,
180
,
179
,
165
,
177
,
176
,
294
,
353
,
176
,
175
,
343
,
342
,
322
,
321
,
196
,
304
,
197
,
341
,
214
,
354
,
226
,
163
,
343
,
205
,
225
,
181
,
361
,
196
,
280
,
289
,
374
,
363
,
381
,
195
,
181
,
173
,
192
,
310
,
369
,
191
,
358
,
338
,
334
,
333
,
335
,
209
,
208
,
210
,
316
,
318
,
197
,
210
,
209
,
211
,
353
,
355
,
226
,
229
,
228
,
367
,
366
,
368
,
238
,
241
,
240
,
356
,
355
,
357
,
218
,
217
,
219
,
237
,
239
,
194
,
193
,
195
,
373
,
375
,
208
,
211
,
210
,
293
,
292
,
294
,
301
,
304
,
303
,
387
,
386
,
388
,
376
,
375
,
377
,
393
,
396
,
395
,
208
,
207
,
209
,
193
,
196
,
195
,
205
,
204
,
206
,
322
,
324
,
381
,
384
,
383
,
204
,
203
,
205
,
371
,
370
,
372
,
350
,
353
,
352
,
324
,
323
,
198
,
306
,
200
,
199
,
343
,
216
,
157
,
357
,
356
,
228
,
346
,
345
,
207
,
227
,
183
,
363
,
198
,
282
,
291
,
167
,
377
,
376
,
365
,
383
,
197
,
183
,
194
,
312
,
371
,
194
,
193
,
360
,
340
,
197
,
167
,
179
,
323
,
335
,
198
,
210
,
306
,
318
,
199
,
211
,
343
,
355
,
216
,
229
,
228
,
356
,
368
,
228
,
241
,
240
,
345
,
357
,
207
,
219
,
227
,
239
,
183
,
195
,
363
,
375
,
198
,
211
,
210
,
282
,
294
,
291
,
304
,
303
,
376
,
388
,
365
,
377
,
383
,
396
,
395
,
197
,
209
,
183
,
196
,
195
,
194
,
206
,
312
,
324
,
371
,
384
,
383
,
193
,
205
,
360
,
372
,
340
,
353
,
352
,
334
,
333
,
208
,
316
,
210
,
209
,
353
,
226
,
157
,
367
,
366
,
238
,
356
,
355
,
217
,
237
,
193
,
373
,
208
,
292
,
301
,
173
,
387
,
386
,
375
,
393
,
207
,
193
,
204
,
322
,
381
,
204
,
203
,
370
,
350
,
316
,
315
,
191
,
190
,
298
,
181
,
192
,
191
,
335
,
208
,
349
,
348
,
220
,
338
,
337
,
200
,
199
,
219
,
176
,
175
,
355
,
190
,
275
,
274
,
283
,
369
,
368
,
358
,
357
,
375
,
190
,
189
,
175
,
157
,
187
,
186
,
304
,
363
,
186
,
185
,
353
,
352
,
332
,
305
,
321
,
180
,
196
,
288
,
304
,
181
,
197
,
325
,
341
,
198
,
215
,
214
,
338
,
354
,
210
,
227
,
226
,
193
,
327
,
343
,
189
,
205
,
209
,
225
,
165
,
181
,
345
,
361
,
180
,
197
,
196
,
264
,
280
,
273
,
290
,
289
,
358
,
374
,
347
,
363
,
365
,
382
,
381
,
179
,
195
,
165
,
182
,
181
,
176
,
192
,
294
,
310
,
353
,
370
,
369
,
175
,
191
,
342
,
358
,
322
,
339
,
338
,
310
,
309
,
184
,
292
,
186
,
185
,
329
,
202
,
191
,
343
,
342
,
214
,
332
,
331
,
193
,
213
,
169
,
349
,
184
,
268
,
277
,
197
,
363
,
362
,
351
,
369
,
183
,
169
,
180
,
298
,
357
,
180
,
179
,
346
,
326
};
short
Gen_shift_values_BG2_a_13
[
1483
]
=
{
142
,
17
,
125
,
18
,
162
,
35
,
175
,
47
,
164
,
26
,
46
,
2
,
182
,
17
,
101
,
110
,
195
,
184
,
202
,
16
,
2
,
13
,
131
,
190
,
12
,
179
,
159
,
143
,
142
,
17
,
125
,
19
,
18
,
162
,
35
,
176
,
175
,
47
,
165
,
164
,
26
,
46
,
2
,
182
,
17
,
101
,
110
,
196
,
195
,
184
,
202
,
16
,
2
,
13
,
131
,
190
,
13
,
12
,
179
,
159
,
143
,
142
,
18
,
17
,
125
,
19
,
18
,
162
,
35
,
176
,
175
,
47
,
165
,
164
,
27
,
26
,
46
,
3
,
2
,
182
,
17
,
102
,
101
,
110
,
196
,
195
,
185
,
184
,
202
,
17
,
16
,
2
,
14
,
13
,
131
,
190
,
13
,
12
,
180
,
179
,
159
,
142
,
17
,
125
,
18
,
162
,
36
,
35
,
175
,
48
,
47
,
164
,
26
,
46
,
2
,
182
,
18
,
17
,
101
,
111
,
110
,
195
,
184
,
203
,
202
,
16
,
3
,
2
,
13
,
131
,
191
,
190
,
12
,
179
,
160
,
159
,
260
,
259
,
134
,
242
,
43
,
136
,
135
,
279
,
152
,
27
,
293
,
292
,
164
,
282
,
281
,
143
,
163
,
119
,
299
,
134
,
218
,
227
,
313
,
312
,
301
,
319
,
133
,
119
,
130
,
248
,
307
,
130
,
129
,
296
,
276
,
205
,
204
,
79
,
187
,
136
,
81
,
80
,
224
,
97
,
49
,
238
,
237
,
109
,
227
,
226
,
88
,
108
,
64
,
244
,
79
,
163
,
172
,
36
,
258
,
257
,
246
,
264
,
78
,
64
,
132
,
75
,
193
,
252
,
75
,
74
,
241
,
221
,
155
,
154
,
29
,
137
,
7
,
31
,
30
,
174
,
47
,
188
,
187
,
59
,
177
,
176
,
38
,
58
,
14
,
194
,
29
,
113
,
122
,
34
,
208
,
207
,
196
,
214
,
28
,
14
,
198
,
25
,
143
,
202
,
25
,
24
,
191
,
171
,
168
,
250
,
249
,
200
,
124
,
75
,
232
,
183
,
126
,
125
,
76
,
269
,
220
,
142
,
94
,
93
,
163
,
283
,
282
,
233
,
154
,
106
,
105
,
272
,
271
,
222
,
133
,
84
,
153
,
104
,
109
,
60
,
289
,
240
,
124
,
76
,
75
,
208
,
159
,
217
,
169
,
168
,
78
,
303
,
302
,
253
,
291
,
242
,
309
,
261
,
260
,
123
,
74
,
109
,
61
,
60
,
143
,
120
,
71
,
238
,
189
,
297
,
249
,
248
,
120
,
119
,
70
,
286
,
237
,
266
,
218
,
217
,
165
,
164
,
40
,
39
,
147
,
101
,
41
,
40
,
184
,
57
,
177
,
198
,
197
,
69
,
187
,
186
,
49
,
48
,
68
,
25
,
24
,
204
,
39
,
124
,
123
,
132
,
218
,
217
,
207
,
206
,
224
,
39
,
38
,
24
,
36
,
35
,
153
,
212
,
35
,
34
,
202
,
201
,
181
,
347
,
224
,
223
,
222
,
98
,
330
,
206
,
223
,
100
,
99
,
367
,
243
,
240
,
116
,
186
,
380
,
257
,
256
,
252
,
128
,
369
,
246
,
245
,
231
,
107
,
251
,
127
,
207
,
83
,
387
,
263
,
222
,
98
,
306
,
182
,
315
,
191
,
400
,
277
,
276
,
389
,
265
,
407
,
283
,
221
,
97
,
207
,
83
,
218
,
94
,
336
,
212
,
395
,
271
,
27
,
217
,
94
,
93
,
384
,
260
,
364
,
240
,
125
,
60
,
177
,
51
,
150
,
25
,
133
,
39
,
26
,
170
,
44
,
43
,
183
,
56
,
55
,
172
,
34
,
54
,
10
,
190
,
26
,
25
,
109
,
119
,
118
,
203
,
192
,
211
,
210
,
24
,
11
,
10
,
29
,
21
,
139
,
199
,
198
,
20
,
187
,
168
,
167
,
35
,
192
,
191
,
66
,
174
,
68
,
67
,
211
,
84
,
18
,
225
,
224
,
96
,
214
,
213
,
75
,
95
,
155
,
51
,
231
,
66
,
150
,
159
,
245
,
244
,
233
,
251
,
65
,
51
,
62
,
180
,
239
,
62
,
61
,
228
,
208
,
328
,
203
,
311
,
32
,
204
,
348
,
222
,
221
,
53
,
361
,
234
,
233
,
350
,
212
,
232
,
188
,
368
,
204
,
203
,
287
,
297
,
296
,
381
,
370
,
389
,
388
,
202
,
189
,
188
,
199
,
317
,
377
,
376
,
95
,
198
,
365
,
346
,
345
,
195
,
194
,
251
,
69
,
126
,
177
,
234
,
71
,
70
,
127
,
214
,
271
,
87
,
145
,
144
,
91
,
228
,
227
,
284
,
99
,
157
,
156
,
217
,
216
,
273
,
78
,
135
,
98
,
155
,
54
,
111
,
234
,
291
,
69
,
127
,
126
,
153
,
210
,
162
,
220
,
219
,
248
,
247
,
304
,
236
,
293
,
254
,
312
,
311
,
20
,
68
,
125
,
54
,
112
,
111
,
65
,
122
,
183
,
240
,
242
,
300
,
299
,
65
,
64
,
121
,
231
,
288
,
211
,
269
,
268
,
250
,
245
,
244
,
125
,
119
,
233
,
227
,
174
,
126
,
121
,
120
,
270
,
264
,
143
,
137
,
283
,
278
,
277
,
155
,
149
,
272
,
267
,
266
,
134
,
128
,
154
,
148
,
110
,
104
,
290
,
284
,
125
,
119
,
209
,
203
,
218
,
212
,
303
,
298
,
297
,
292
,
286
,
310
,
304
,
124
,
118
,
110
,
104
,
121
,
115
,
239
,
233
,
298
,
292
,
120
,
115
,
114
,
287
,
281
,
267
,
261
,
197
,
196
,
319
,
318
,
71
,
194
,
193
,
179
,
301
,
73
,
72
,
195
,
194
,
216
,
338
,
89
,
211
,
125
,
230
,
229
,
352
,
351
,
101
,
223
,
219
,
218
,
341
,
340
,
80
,
203
,
202
,
100
,
222
,
56
,
179
,
178
,
236
,
358
,
71
,
193
,
155
,
278
,
277
,
164
,
286
,
250
,
249
,
372
,
371
,
238
,
361
,
360
,
256
,
378
,
70
,
193
,
192
,
56
,
178
,
67
,
190
,
189
,
185
,
307
,
244
,
366
,
67
,
66
,
189
,
188
,
233
,
356
,
355
,
213
,
335
,
31
,
285
,
284
,
178
,
177
,
159
,
53
,
52
,
267
,
160
,
161
,
160
,
54
,
53
,
304
,
197
,
177
,
70
,
57
,
318
,
317
,
211
,
210
,
189
,
82
,
307
,
306
,
200
,
199
,
168
,
62
,
61
,
188
,
81
,
144
,
38
,
37
,
324
,
217
,
159
,
52
,
243
,
137
,
136
,
252
,
145
,
201
,
338
,
337
,
231
,
230
,
326
,
220
,
219
,
344
,
237
,
158
,
52
,
51
,
144
,
37
,
155
,
49
,
48
,
273
,
166
,
332
,
225
,
155
,
154
,
48
,
47
,
321
,
215
,
214
,
301
,
194
,
129
,
203
,
140
,
194
,
69
,
177
,
110
,
70
,
214
,
87
,
124
,
227
,
99
,
216
,
78
,
98
,
54
,
234
,
69
,
153
,
162
,
247
,
236
,
254
,
68
,
54
,
65
,
183
,
242
,
64
,
231
,
211
,
257
,
256
,
131
,
239
,
133
,
132
,
276
,
149
,
196
,
290
,
289
,
161
,
279
,
278
,
140
,
160
,
116
,
296
,
131
,
35
,
215
,
224
,
310
,
309
,
298
,
316
,
130
,
116
,
127
,
245
,
304
,
127
,
126
,
293
,
273
,
165
,
40
,
148
,
10
,
41
,
185
,
59
,
58
,
198
,
71
,
70
,
187
,
49
,
69
,
25
,
205
,
41
,
40
,
124
,
134
,
133
,
218
,
207
,
226
,
225
,
39
,
26
,
25
,
36
,
154
,
214
,
213
,
122
,
35
,
202
,
183
,
182
,
202
,
126
,
52
,
170
,
13
,
113
,
161
,
88
,
197
,
194
,
192
,
191
,
303
,
67
,
66
,
178
,
174
,
286
,
68
,
67
,
179
,
211
,
323
,
84
,
197
,
196
,
225
,
224
,
336
,
96
,
209
,
208
,
164
,
214
,
213
,
325
,
76
,
75
,
187
,
95
,
207
,
52
,
51
,
163
,
231
,
343
,
66
,
179
,
178
,
151
,
150
,
262
,
159
,
272
,
271
,
245
,
244
,
356
,
234
,
233
,
345
,
251
,
364
,
363
,
66
,
65
,
177
,
51
,
164
,
163
,
172
,
63
,
62
,
174
,
180
,
292
,
239
,
352
,
351
,
62
,
61
,
173
,
229
,
228
,
340
,
208
,
321
,
320
,
168
,
193
,
14
,
186
,
46
,
50
,
27
,
70
,
17
,
50
,
6
,
331
,
206
,
314
,
207
,
351
,
225
,
224
,
115
,
364
,
237
,
236
,
353
,
215
,
235
,
191
,
371
,
207
,
206
,
290
,
300
,
299
,
384
,
373
,
392
,
391
,
205
,
192
,
191
,
202
,
320
,
380
,
379
,
201
,
368
,
349
,
348
,
306
,
305
,
181
,
180
,
288
,
110
,
182
,
181
,
325
,
198
,
339
,
338
,
210
,
328
,
327
,
190
,
189
,
209
,
166
,
165
,
345
,
180
,
265
,
264
,
273
,
0
,
359
,
358
,
348
,
347
,
365
,
180
,
179
,
165
,
177
,
176
,
294
,
353
,
176
,
175
,
343
,
342
,
322
,
321
,
196
,
304
,
197
,
341
,
214
,
354
,
226
,
163
,
343
,
205
,
225
,
181
,
361
,
196
,
280
,
289
,
374
,
363
,
381
,
195
,
181
,
173
,
192
,
310
,
369
,
191
,
358
,
338
,
334
,
333
,
335
,
209
,
208
,
210
,
316
,
318
,
197
,
210
,
209
,
211
,
353
,
355
,
226
,
229
,
228
,
367
,
366
,
368
,
238
,
241
,
240
,
356
,
355
,
357
,
218
,
217
,
219
,
237
,
239
,
194
,
193
,
195
,
373
,
375
,
208
,
211
,
210
,
293
,
292
,
294
,
301
,
304
,
303
,
387
,
386
,
388
,
376
,
375
,
377
,
393
,
396
,
395
,
208
,
207
,
209
,
193
,
196
,
195
,
205
,
204
,
206
,
322
,
324
,
381
,
384
,
383
,
204
,
203
,
205
,
371
,
370
,
372
,
350
,
353
,
352
,
324
,
323
,
198
,
306
,
200
,
199
,
343
,
216
,
157
,
357
,
356
,
228
,
346
,
345
,
207
,
227
,
183
,
363
,
198
,
282
,
291
,
167
,
377
,
376
,
365
,
383
,
197
,
183
,
194
,
312
,
371
,
194
,
193
,
360
,
340
,
197
,
167
,
179
,
323
,
335
,
198
,
210
,
306
,
318
,
199
,
211
,
343
,
355
,
216
,
229
,
228
,
356
,
368
,
228
,
241
,
240
,
345
,
357
,
207
,
219
,
227
,
239
,
183
,
195
,
363
,
375
,
198
,
211
,
210
,
282
,
294
,
291
,
304
,
303
,
376
,
388
,
365
,
377
,
383
,
396
,
395
,
197
,
209
,
183
,
196
,
195
,
194
,
206
,
312
,
324
,
371
,
384
,
383
,
193
,
205
,
360
,
372
,
340
,
353
,
352
,
334
,
333
,
208
,
316
,
210
,
209
,
353
,
226
,
157
,
367
,
366
,
238
,
356
,
355
,
217
,
237
,
193
,
373
,
208
,
292
,
301
,
173
,
387
,
386
,
375
,
393
,
207
,
193
,
204
,
322
,
381
,
204
,
203
,
370
,
350
,
316
,
315
,
191
,
190
,
298
,
181
,
192
,
191
,
335
,
208
,
349
,
348
,
220
,
338
,
337
,
200
,
199
,
219
,
176
,
175
,
355
,
190
,
275
,
274
,
283
,
369
,
368
,
358
,
357
,
375
,
190
,
189
,
175
,
157
,
187
,
186
,
304
,
363
,
186
,
185
,
353
,
352
,
332
,
305
,
321
,
180
,
196
,
288
,
304
,
181
,
197
,
325
,
341
,
198
,
215
,
214
,
338
,
354
,
210
,
227
,
226
,
193
,
327
,
343
,
189
,
205
,
209
,
225
,
165
,
181
,
345
,
361
,
180
,
197
,
196
,
264
,
280
,
273
,
290
,
289
,
358
,
374
,
347
,
363
,
365
,
382
,
381
,
179
,
195
,
165
,
182
,
181
,
176
,
192
,
294
,
310
,
353
,
370
,
369
,
175
,
191
,
342
,
358
,
322
,
339
,
338
,
310
,
309
,
184
,
292
,
186
,
185
,
329
,
202
,
191
,
343
,
342
,
214
,
332
,
331
,
193
,
213
,
169
,
349
,
184
,
268
,
277
,
197
,
363
,
362
,
351
,
369
,
183
,
169
,
180
,
298
,
357
,
180
,
179
,
346
,
326
};
short
Gen_shift_values_BG2_a_15
[
1483
]
=
{
145
,
142
,
74
,
131
,
31
,
239
,
71
,
171
,
21
,
174
,
3
,
183
,
53
,
95
,
27
,
110
,
23
,
96
,
159
,
23
,
199
,
9
,
155
,
43
,
112
,
167
,
75
,
145
,
146
,
143
,
75
,
131
,
132
,
32
,
240
,
71
,
72
,
172
,
21
,
22
,
175
,
4
,
184
,
54
,
96
,
28
,
111
,
23
,
24
,
97
,
160
,
24
,
200
,
10
,
156
,
44
,
112
,
113
,
168
,
76
,
145
,
146
,
142
,
143
,
75
,
131
,
132
,
32
,
240
,
71
,
72
,
172
,
21
,
22
,
174
,
175
,
4
,
183
,
184
,
54
,
96
,
27
,
28
,
111
,
23
,
24
,
96
,
97
,
160
,
23
,
24
,
200
,
9
,
10
,
156
,
44
,
112
,
113
,
167
,
168
,
76
,
146
,
143
,
75
,
132
,
32
,
239
,
240
,
72
,
171
,
172
,
22
,
175
,
4
,
184
,
54
,
95
,
96
,
28
,
110
,
111
,
24
,
97
,
159
,
160
,
24
,
199
,
200
,
10
,
156
,
43
,
44
,
113
,
168
,
75
,
76
,
325
,
326
,
323
,
255
,
29
,
311
,
312
,
212
,
420
,
140
,
251
,
252
,
352
,
201
,
202
,
355
,
184
,
364
,
234
,
276
,
208
,
291
,
203
,
204
,
277
,
340
,
204
,
380
,
190
,
336
,
224
,
292
,
293
,
348
,
256
,
352
,
353
,
350
,
282
,
121
,
338
,
339
,
239
,
447
,
41
,
278
,
279
,
379
,
228
,
229
,
382
,
211
,
391
,
261
,
303
,
235
,
318
,
169
,
230
,
231
,
304
,
367
,
231
,
407
,
88
,
217
,
363
,
251
,
319
,
320
,
375
,
283
,
201
,
202
,
199
,
131
,
137
,
187
,
188
,
88
,
296
,
127
,
128
,
228
,
77
,
78
,
231
,
60
,
240
,
110
,
152
,
84
,
167
,
72
,
79
,
80
,
153
,
216
,
80
,
256
,
172
,
66
,
212
,
100
,
168
,
169
,
224
,
132
,
124
,
317
,
318
,
300
,
315
,
297
,
247
,
229
,
303
,
304
,
286
,
204
,
186
,
412
,
393
,
394
,
86
,
243
,
244
,
226
,
344
,
325
,
326
,
193
,
194
,
176
,
347
,
329
,
176
,
158
,
356
,
338
,
226
,
208
,
268
,
249
,
250
,
200
,
182
,
283
,
264
,
265
,
186
,
195
,
196
,
178
,
269
,
251
,
332
,
313
,
314
,
196
,
178
,
372
,
353
,
354
,
87
,
182
,
164
,
328
,
310
,
216
,
197
,
198
,
284
,
285
,
267
,
340
,
322
,
248
,
229
,
230
,
370
,
371
,
367
,
368
,
300
,
176
,
356
,
357
,
257
,
465
,
169
,
296
,
297
,
397
,
246
,
247
,
399
,
400
,
229
,
408
,
409
,
279
,
321
,
252
,
253
,
336
,
248
,
249
,
321
,
322
,
385
,
248
,
249
,
425
,
234
,
235
,
381
,
269
,
337
,
338
,
392
,
393
,
301
,
193
,
213
,
214
,
190
,
211
,
122
,
143
,
179
,
199
,
200
,
79
,
100
,
287
,
308
,
167
,
119
,
139
,
140
,
219
,
240
,
69
,
89
,
90
,
222
,
243
,
51
,
72
,
231
,
252
,
101
,
122
,
143
,
164
,
75
,
96
,
158
,
179
,
71
,
91
,
92
,
144
,
165
,
207
,
228
,
71
,
92
,
247
,
268
,
57
,
78
,
203
,
224
,
91
,
112
,
238
,
160
,
180
,
181
,
215
,
236
,
123
,
144
,
38
,
217
,
208
,
232
,
197
,
194
,
126
,
178
,
183
,
83
,
290
,
291
,
123
,
222
,
223
,
73
,
226
,
55
,
235
,
105
,
146
,
147
,
79
,
161
,
162
,
75
,
148
,
210
,
211
,
75
,
250
,
251
,
214
,
61
,
207
,
94
,
95
,
164
,
219
,
126
,
127
,
168
,
217
,
218
,
215
,
147
,
203
,
204
,
104
,
312
,
124
,
143
,
144
,
244
,
93
,
94
,
247
,
76
,
122
,
256
,
126
,
168
,
100
,
183
,
95
,
96
,
169
,
232
,
96
,
272
,
82
,
228
,
116
,
184
,
185
,
240
,
148
,
365
,
362
,
294
,
48
,
351
,
251
,
458
,
459
,
57
,
291
,
390
,
391
,
241
,
394
,
223
,
403
,
273
,
314
,
315
,
247
,
329
,
330
,
243
,
316
,
378
,
379
,
243
,
418
,
419
,
229
,
375
,
262
,
263
,
167
,
332
,
387
,
294
,
295
,
349
,
350
,
308
,
347
,
305
,
279
,
237
,
335
,
336
,
294
,
236
,
194
,
444
,
401
,
402
,
82
,
275
,
276
,
234
,
376
,
333
,
334
,
225
,
226
,
184
,
379
,
337
,
208
,
166
,
388
,
346
,
258
,
216
,
300
,
257
,
258
,
232
,
190
,
315
,
272
,
273
,
227
,
228
,
186
,
301
,
259
,
364
,
321
,
322
,
232
,
228
,
186
,
404
,
361
,
362
,
214
,
172
,
360
,
318
,
248
,
205
,
206
,
316
,
317
,
275
,
372
,
330
,
280
,
237
,
238
,
362
,
302
,
303
,
359
,
300
,
291
,
232
,
38
,
348
,
288
,
289
,
248
,
189
,
456
,
397
,
288
,
228
,
229
,
388
,
329
,
238
,
178
,
179
,
391
,
332
,
220
,
161
,
400
,
341
,
270
,
211
,
312
,
253
,
244
,
185
,
327
,
268
,
240
,
180
,
181
,
313
,
254
,
376
,
317
,
240
,
181
,
416
,
357
,
226
,
167
,
372
,
313
,
260
,
201
,
329
,
269
,
270
,
384
,
325
,
292
,
233
,
320
,
321
,
347
,
348
,
318
,
344
,
345
,
250
,
277
,
306
,
307
,
333
,
334
,
207
,
234
,
415
,
442
,
170
,
246
,
247
,
273
,
274
,
347
,
374
,
196
,
197
,
223
,
224
,
350
,
376
,
377
,
179
,
206
,
359
,
385
,
386
,
229
,
256
,
271
,
298
,
203
,
229
,
230
,
286
,
313
,
198
,
199
,
225
,
226
,
272
,
298
,
299
,
335
,
362
,
199
,
225
,
226
,
375
,
402
,
185
,
211
,
212
,
331
,
358
,
219
,
246
,
287
,
288
,
314
,
315
,
343
,
369
,
370
,
251
,
278
,
23
,
340
,
341
,
363
,
364
,
338
,
360
,
361
,
270
,
293
,
326
,
327
,
349
,
350
,
227
,
250
,
435
,
458
,
196
,
266
,
267
,
289
,
290
,
367
,
390
,
216
,
217
,
239
,
240
,
370
,
392
,
393
,
199
,
222
,
379
,
401
,
402
,
249
,
272
,
291
,
314
,
223
,
245
,
246
,
306
,
329
,
173
,
218
,
219
,
241
,
242
,
292
,
314
,
315
,
355
,
378
,
219
,
241
,
242
,
395
,
418
,
205
,
227
,
228
,
351
,
374
,
239
,
262
,
307
,
308
,
330
,
331
,
363
,
385
,
386
,
271
,
294
,
128
,
211
,
210
,
233
,
230
,
162
,
39
,
219
,
119
,
327
,
84
,
159
,
259
,
109
,
262
,
91
,
271
,
141
,
183
,
115
,
198
,
111
,
184
,
247
,
111
,
287
,
97
,
243
,
131
,
200
,
255
,
163
,
151
,
152
,
149
,
81
,
137
,
138
,
38
,
246
,
117
,
77
,
78
,
178
,
27
,
28
,
181
,
10
,
190
,
60
,
102
,
227
,
34
,
117
,
29
,
30
,
103
,
166
,
30
,
206
,
16
,
162
,
50
,
118
,
119
,
174
,
82
,
157
,
154
,
86
,
238
,
143
,
43
,
250
,
251
,
83
,
182
,
183
,
33
,
186
,
15
,
195
,
65
,
106
,
107
,
39
,
121
,
122
,
35
,
108
,
170
,
171
,
35
,
210
,
211
,
21
,
167
,
54
,
55
,
13
,
124
,
179
,
86
,
87
,
195
,
44
,
5
,
94
,
111
,
81
,
19
,
130
,
66
,
95
,
335
,
336
,
232
,
332
,
333
,
229
,
265
,
161
,
321
,
322
,
218
,
222
,
118
,
430
,
325
,
326
,
261
,
262
,
158
,
362
,
257
,
258
,
146
,
211
,
212
,
108
,
364
,
365
,
261
,
194
,
90
,
373
,
374
,
270
,
244
,
140
,
286
,
181
,
182
,
217
,
218
,
114
,
301
,
196
,
197
,
213
,
214
,
110
,
286
,
287
,
183
,
350
,
245
,
246
,
213
,
214
,
110
,
390
,
285
,
286
,
66
,
199
,
200
,
96
,
346
,
242
,
234
,
129
,
130
,
302
,
303
,
199
,
357
,
358
,
254
,
266
,
161
,
162
,
64
,
181
,
7
,
144
,
16
,
25
,
57
,
37
,
139
,
221
,
17
,
192
,
189
,
121
,
178
,
78
,
285
,
286
,
201
,
118
,
217
,
218
,
68
,
221
,
50
,
230
,
100
,
141
,
142
,
74
,
156
,
157
,
70
,
143
,
205
,
206
,
70
,
245
,
246
,
56
,
202
,
89
,
90
,
159
,
214
,
121
,
122
,
261
,
262
,
258
,
259
,
191
,
179
,
247
,
248
,
148
,
356
,
187
,
188
,
288
,
137
,
138
,
290
,
291
,
120
,
299
,
300
,
170
,
212
,
143
,
144
,
227
,
14
,
139
,
140
,
212
,
213
,
276
,
139
,
140
,
316
,
125
,
126
,
272
,
160
,
228
,
229
,
283
,
284
,
192
,
251
,
248
,
180
,
237
,
137
,
345
,
177
,
277
,
46
,
127
,
280
,
109
,
289
,
159
,
201
,
133
,
216
,
129
,
202
,
265
,
129
,
305
,
2
,
115
,
261
,
149
,
218
,
273
,
181
,
280
,
281
,
287
,
277
,
278
,
284
,
210
,
216
,
184
,
266
,
267
,
273
,
167
,
173
,
375
,
380
,
381
,
206
,
207
,
213
,
307
,
312
,
313
,
156
,
157
,
163
,
309
,
310
,
316
,
139
,
145
,
318
,
319
,
325
,
189
,
195
,
231
,
236
,
237
,
162
,
163
,
169
,
246
,
251
,
252
,
158
,
159
,
165
,
231
,
232
,
238
,
295
,
300
,
301
,
158
,
159
,
165
,
335
,
340
,
341
,
144
,
145
,
151
,
291
,
297
,
179
,
184
,
185
,
247
,
248
,
254
,
302
,
303
,
309
,
211
,
216
,
217
,
320
,
321
,
318
,
250
,
306
,
307
,
207
,
415
,
85
,
246
,
247
,
347
,
196
,
197
,
350
,
179
,
359
,
229
,
271
,
203
,
286
,
225
,
198
,
199
,
272
,
335
,
199
,
375
,
185
,
331
,
219
,
287
,
288
,
343
,
251
,
178
,
112
,
106
,
299
,
260
,
296
,
257
,
228
,
189
,
285
,
246
,
185
,
146
,
393
,
353
,
354
,
225
,
186
,
325
,
285
,
286
,
175
,
136
,
328
,
289
,
157
,
118
,
337
,
298
,
207
,
168
,
249
,
209
,
210
,
181
,
142
,
264
,
224
,
225
,
177
,
138
,
250
,
211
,
313
,
273
,
274
,
177
,
138
,
353
,
313
,
314
,
163
,
124
,
309
,
270
,
197
,
157
,
158
,
266
,
227
,
321
,
282
,
229
,
189
,
190
,
250
,
251
,
248
,
180
,
236
,
237
,
137
,
345
,
42
,
176
,
177
,
277
,
126
,
127
,
280
,
109
,
289
,
159
,
201
,
133
,
216
,
41
,
128
,
129
,
202
,
265
,
129
,
305
,
115
,
261
,
149
,
217
,
218
,
273
,
181
,
334
,
335
,
331
,
332
,
264
,
167
,
320
,
321
,
221
,
429
,
260
,
261
,
361
,
210
,
211
,
363
,
364
,
193
,
372
,
373
,
243
,
285
,
216
,
217
,
300
,
212
,
213
,
285
,
286
,
349
,
212
,
213
,
389
,
45
,
198
,
199
,
345
,
233
,
301
,
302
,
356
,
357
,
265
,
212
,
326
,
209
,
323
,
141
,
255
,
198
,
312
,
98
,
212
,
306
,
419
,
420
,
138
,
252
,
238
,
351
,
352
,
78
,
88
,
202
,
241
,
355
,
70
,
184
,
250
,
364
,
120
,
234
,
162
,
275
,
276
,
94
,
208
,
177
,
290
,
291
,
90
,
204
,
163
,
277
,
226
,
339
,
340
,
90
,
204
,
266
,
379
,
380
,
76
,
190
,
222
,
336
,
110
,
223
,
224
,
179
,
293
,
234
,
348
,
142
,
255
,
256
,
375
,
376
,
373
,
305
,
361
,
362
,
262
,
470
,
53
,
301
,
302
,
402
,
251
,
252
,
405
,
234
,
414
,
284
,
326
,
258
,
341
,
215
,
253
,
254
,
327
,
390
,
254
,
430
,
240
,
386
,
274
,
342
,
343
,
398
,
306
};
short
Gen_shift_values_BG2_a_15
[
1483
]
=
{
145
,
142
,
74
,
131
,
31
,
239
,
71
,
171
,
21
,
174
,
3
,
183
,
53
,
95
,
27
,
110
,
23
,
96
,
159
,
23
,
199
,
9
,
155
,
43
,
112
,
167
,
75
,
145
,
146
,
143
,
75
,
131
,
132
,
32
,
240
,
71
,
72
,
172
,
21
,
22
,
175
,
4
,
184
,
54
,
96
,
28
,
111
,
23
,
24
,
97
,
160
,
24
,
200
,
10
,
156
,
44
,
112
,
113
,
168
,
76
,
145
,
146
,
142
,
143
,
75
,
131
,
132
,
32
,
240
,
71
,
72
,
172
,
21
,
22
,
174
,
175
,
4
,
183
,
184
,
54
,
96
,
27
,
28
,
111
,
23
,
24
,
96
,
97
,
160
,
23
,
24
,
200
,
9
,
10
,
156
,
44
,
112
,
113
,
167
,
168
,
76
,
146
,
143
,
75
,
132
,
32
,
239
,
240
,
72
,
171
,
172
,
22
,
175
,
4
,
184
,
54
,
95
,
96
,
28
,
110
,
111
,
24
,
97
,
159
,
160
,
24
,
199
,
200
,
10
,
156
,
43
,
44
,
113
,
168
,
75
,
76
,
325
,
326
,
323
,
255
,
29
,
311
,
312
,
212
,
420
,
140
,
251
,
252
,
352
,
201
,
202
,
355
,
184
,
364
,
234
,
276
,
208
,
291
,
203
,
204
,
277
,
340
,
204
,
380
,
190
,
336
,
224
,
292
,
293
,
348
,
256
,
352
,
353
,
350
,
282
,
121
,
338
,
339
,
239
,
447
,
41
,
278
,
279
,
379
,
228
,
229
,
382
,
211
,
391
,
261
,
303
,
235
,
318
,
169
,
230
,
231
,
304
,
367
,
231
,
407
,
88
,
217
,
363
,
251
,
319
,
320
,
375
,
283
,
201
,
202
,
199
,
131
,
137
,
187
,
188
,
88
,
296
,
127
,
128
,
228
,
77
,
78
,
231
,
60
,
240
,
110
,
152
,
84
,
167
,
72
,
79
,
80
,
153
,
216
,
80
,
256
,
172
,
66
,
212
,
100
,
168
,
169
,
224
,
132
,
124
,
317
,
318
,
300
,
315
,
297
,
247
,
229
,
303
,
304
,
286
,
204
,
186
,
412
,
393
,
394
,
86
,
243
,
244
,
226
,
344
,
325
,
326
,
193
,
194
,
176
,
347
,
329
,
176
,
158
,
356
,
338
,
226
,
208
,
268
,
249
,
250
,
200
,
182
,
283
,
264
,
265
,
186
,
195
,
196
,
178
,
269
,
251
,
332
,
313
,
314
,
196
,
178
,
372
,
353
,
354
,
87
,
182
,
164
,
328
,
310
,
216
,
197
,
198
,
284
,
285
,
267
,
340
,
322
,
248
,
229
,
230
,
370
,
371
,
367
,
368
,
300
,
176
,
356
,
357
,
257
,
465
,
169
,
296
,
297
,
397
,
246
,
247
,
399
,
400
,
229
,
408
,
409
,
279
,
321
,
252
,
253
,
336
,
248
,
249
,
321
,
322
,
385
,
248
,
249
,
425
,
234
,
235
,
381
,
269
,
337
,
338
,
392
,
393
,
301
,
193
,
213
,
214
,
190
,
211
,
122
,
143
,
179
,
199
,
200
,
79
,
100
,
287
,
308
,
167
,
119
,
139
,
140
,
219
,
240
,
69
,
89
,
90
,
222
,
243
,
51
,
72
,
231
,
252
,
101
,
122
,
143
,
164
,
75
,
96
,
158
,
179
,
71
,
91
,
92
,
144
,
165
,
207
,
228
,
71
,
92
,
247
,
268
,
57
,
78
,
203
,
224
,
91
,
112
,
238
,
160
,
180
,
181
,
215
,
236
,
123
,
144
,
38
,
217
,
208
,
232
,
197
,
194
,
126
,
178
,
183
,
83
,
290
,
291
,
123
,
222
,
223
,
73
,
226
,
55
,
235
,
105
,
146
,
147
,
79
,
161
,
162
,
75
,
148
,
210
,
211
,
75
,
250
,
251
,
214
,
61
,
207
,
94
,
95
,
164
,
219
,
126
,
127
,
168
,
217
,
218
,
215
,
147
,
203
,
204
,
104
,
312
,
124
,
143
,
144
,
244
,
93
,
94
,
247
,
76
,
122
,
256
,
126
,
168
,
100
,
183
,
95
,
96
,
169
,
232
,
96
,
272
,
82
,
228
,
116
,
184
,
185
,
240
,
148
,
365
,
362
,
294
,
48
,
351
,
251
,
458
,
459
,
57
,
291
,
390
,
391
,
241
,
394
,
223
,
403
,
273
,
314
,
315
,
247
,
329
,
330
,
243
,
316
,
378
,
379
,
243
,
418
,
419
,
229
,
375
,
262
,
263
,
167
,
332
,
387
,
294
,
295
,
349
,
350
,
308
,
347
,
305
,
279
,
237
,
335
,
336
,
294
,
236
,
194
,
444
,
401
,
402
,
82
,
275
,
276
,
234
,
376
,
333
,
334
,
225
,
226
,
184
,
379
,
337
,
208
,
166
,
388
,
346
,
258
,
216
,
300
,
257
,
258
,
232
,
190
,
315
,
272
,
273
,
227
,
228
,
186
,
301
,
259
,
364
,
321
,
322
,
232
,
228
,
186
,
404
,
361
,
362
,
214
,
172
,
360
,
318
,
248
,
205
,
206
,
316
,
317
,
275
,
372
,
330
,
280
,
237
,
238
,
362
,
302
,
303
,
359
,
300
,
291
,
232
,
38
,
348
,
288
,
289
,
248
,
189
,
456
,
397
,
288
,
228
,
229
,
388
,
329
,
238
,
178
,
179
,
391
,
332
,
220
,
161
,
400
,
341
,
270
,
211
,
312
,
253
,
244
,
185
,
327
,
268
,
240
,
180
,
181
,
313
,
254
,
376
,
317
,
240
,
181
,
416
,
357
,
226
,
167
,
372
,
313
,
260
,
201
,
329
,
269
,
270
,
384
,
325
,
292
,
233
,
320
,
321
,
347
,
348
,
318
,
344
,
345
,
250
,
277
,
306
,
307
,
333
,
334
,
207
,
234
,
415
,
442
,
170
,
246
,
247
,
273
,
274
,
347
,
374
,
196
,
197
,
223
,
224
,
350
,
376
,
377
,
179
,
206
,
359
,
385
,
386
,
229
,
256
,
271
,
298
,
203
,
229
,
230
,
286
,
313
,
198
,
199
,
225
,
226
,
272
,
298
,
299
,
335
,
362
,
199
,
225
,
226
,
375
,
402
,
185
,
211
,
212
,
331
,
358
,
219
,
246
,
287
,
288
,
314
,
315
,
343
,
369
,
370
,
251
,
278
,
23
,
340
,
341
,
363
,
364
,
338
,
360
,
361
,
270
,
293
,
326
,
327
,
349
,
350
,
227
,
250
,
435
,
458
,
196
,
266
,
267
,
289
,
290
,
367
,
390
,
216
,
217
,
239
,
240
,
370
,
392
,
393
,
199
,
222
,
379
,
401
,
402
,
249
,
272
,
291
,
314
,
223
,
245
,
246
,
306
,
329
,
173
,
218
,
219
,
241
,
242
,
292
,
314
,
315
,
355
,
378
,
219
,
241
,
242
,
395
,
418
,
205
,
227
,
228
,
351
,
374
,
239
,
262
,
307
,
308
,
330
,
331
,
363
,
385
,
386
,
271
,
294
,
128
,
211
,
210
,
233
,
230
,
162
,
39
,
219
,
119
,
327
,
84
,
159
,
259
,
109
,
262
,
91
,
271
,
141
,
183
,
115
,
198
,
111
,
184
,
247
,
111
,
287
,
97
,
243
,
131
,
200
,
255
,
163
,
151
,
152
,
149
,
81
,
137
,
138
,
38
,
246
,
117
,
77
,
78
,
178
,
27
,
28
,
181
,
10
,
190
,
60
,
102
,
227
,
34
,
117
,
29
,
30
,
103
,
166
,
30
,
206
,
16
,
162
,
50
,
118
,
119
,
174
,
82
,
157
,
154
,
86
,
238
,
143
,
43
,
250
,
251
,
83
,
182
,
183
,
33
,
186
,
15
,
195
,
65
,
106
,
107
,
39
,
121
,
122
,
35
,
108
,
170
,
171
,
35
,
210
,
211
,
21
,
167
,
54
,
55
,
13
,
124
,
179
,
86
,
87
,
195
,
44
,
5
,
94
,
111
,
81
,
19
,
130
,
66
,
95
,
335
,
336
,
232
,
332
,
333
,
229
,
265
,
161
,
321
,
322
,
218
,
222
,
118
,
430
,
325
,
326
,
261
,
262
,
158
,
362
,
257
,
258
,
146
,
211
,
212
,
108
,
364
,
365
,
261
,
194
,
90
,
373
,
374
,
270
,
244
,
140
,
286
,
181
,
182
,
217
,
218
,
114
,
301
,
196
,
197
,
213
,
214
,
110
,
286
,
287
,
183
,
350
,
245
,
246
,
213
,
214
,
110
,
390
,
285
,
286
,
66
,
199
,
200
,
96
,
346
,
242
,
234
,
129
,
130
,
302
,
303
,
199
,
357
,
358
,
254
,
266
,
161
,
162
,
64
,
181
,
7
,
144
,
16
,
25
,
57
,
37
,
139
,
221
,
17
,
192
,
189
,
121
,
178
,
78
,
285
,
286
,
201
,
118
,
217
,
218
,
68
,
221
,
50
,
230
,
100
,
141
,
142
,
74
,
156
,
157
,
70
,
143
,
205
,
206
,
70
,
245
,
246
,
56
,
202
,
89
,
90
,
159
,
214
,
121
,
122
,
261
,
262
,
258
,
259
,
191
,
179
,
247
,
248
,
148
,
356
,
187
,
188
,
288
,
137
,
138
,
290
,
291
,
120
,
299
,
300
,
170
,
212
,
143
,
144
,
227
,
14
,
139
,
140
,
212
,
213
,
276
,
139
,
140
,
316
,
125
,
126
,
272
,
160
,
228
,
229
,
283
,
284
,
192
,
251
,
248
,
180
,
237
,
137
,
345
,
177
,
277
,
46
,
127
,
280
,
109
,
289
,
159
,
201
,
133
,
216
,
129
,
202
,
265
,
129
,
305
,
2
,
115
,
261
,
149
,
218
,
273
,
181
,
280
,
281
,
287
,
277
,
278
,
284
,
210
,
216
,
184
,
266
,
267
,
273
,
167
,
173
,
375
,
380
,
381
,
206
,
207
,
213
,
307
,
312
,
313
,
156
,
157
,
163
,
309
,
310
,
316
,
139
,
145
,
318
,
319
,
325
,
189
,
195
,
231
,
236
,
237
,
162
,
163
,
169
,
246
,
251
,
252
,
158
,
159
,
165
,
231
,
232
,
238
,
295
,
300
,
301
,
158
,
159
,
165
,
335
,
340
,
341
,
144
,
145
,
151
,
291
,
297
,
179
,
184
,
185
,
247
,
248
,
254
,
302
,
303
,
309
,
211
,
216
,
217
,
320
,
321
,
318
,
250
,
306
,
307
,
207
,
415
,
85
,
246
,
247
,
347
,
196
,
197
,
350
,
179
,
359
,
229
,
271
,
203
,
286
,
225
,
198
,
199
,
272
,
335
,
199
,
375
,
185
,
331
,
219
,
287
,
288
,
343
,
251
,
178
,
112
,
106
,
299
,
260
,
296
,
257
,
228
,
189
,
285
,
246
,
185
,
146
,
393
,
353
,
354
,
225
,
186
,
325
,
285
,
286
,
175
,
136
,
328
,
289
,
157
,
118
,
337
,
298
,
207
,
168
,
249
,
209
,
210
,
181
,
142
,
264
,
224
,
225
,
177
,
138
,
250
,
211
,
313
,
273
,
274
,
177
,
138
,
353
,
313
,
314
,
163
,
124
,
309
,
270
,
197
,
157
,
158
,
266
,
227
,
321
,
282
,
229
,
189
,
190
,
250
,
251
,
248
,
180
,
236
,
237
,
137
,
345
,
42
,
176
,
177
,
277
,
126
,
127
,
280
,
109
,
289
,
159
,
201
,
133
,
216
,
41
,
128
,
129
,
202
,
265
,
129
,
305
,
115
,
261
,
149
,
217
,
218
,
273
,
181
,
334
,
335
,
331
,
332
,
264
,
167
,
320
,
321
,
221
,
429
,
260
,
261
,
361
,
210
,
211
,
363
,
364
,
193
,
372
,
373
,
243
,
285
,
216
,
217
,
300
,
212
,
213
,
285
,
286
,
349
,
212
,
213
,
389
,
45
,
198
,
199
,
345
,
233
,
301
,
302
,
356
,
357
,
265
,
212
,
326
,
209
,
323
,
141
,
255
,
198
,
312
,
98
,
212
,
306
,
419
,
420
,
138
,
252
,
238
,
351
,
352
,
78
,
88
,
202
,
241
,
355
,
70
,
184
,
250
,
364
,
120
,
234
,
162
,
275
,
276
,
94
,
208
,
177
,
290
,
291
,
90
,
204
,
163
,
277
,
226
,
339
,
340
,
90
,
204
,
266
,
379
,
380
,
76
,
190
,
222
,
336
,
110
,
223
,
224
,
179
,
293
,
234
,
348
,
142
,
255
,
256
,
375
,
376
,
373
,
305
,
361
,
362
,
262
,
470
,
53
,
301
,
302
,
402
,
251
,
252
,
405
,
234
,
414
,
284
,
326
,
258
,
341
,
215
,
253
,
254
,
327
,
390
,
254
,
430
,
240
,
386
,
274
,
342
,
343
,
398
,
306
};
short
Gen_shift_values_BG2_Z_2
[
1483
]
=
{
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
0
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
0
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
1
,
0
,
1
,
1
,
0
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
0
,
0
,
1
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
0
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
1
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
0
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
1
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
1
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
0
,
0
,
0
,
1
,
1
,
0
,
0
,
0
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
1
,
0
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
0
,
1
,
1
,
0
,
0
,
1
,
1
,
1
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
0
,
1
,
0
,
0
,
0
,
1
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
};
short
Gen_shift_values_BG2_Z_128
[
1483
]
=
{
7
,
37
,
79
,
115
,
112
,
6
,
74
,
56
,
24
,
36
,
42
,
123
,
50
,
28
,
123
,
102
,
59
,
96
,
79
,
26
,
52
,
94
,
110
,
16
,
75
,
122
,
126
,
8
,
7
,
37
,
79
,
116
,
115
,
112
,
6
,
75
,
74
,
56
,
25
,
24
,
36
,
42
,
123
,
50
,
28
,
123
,
102
,
60
,
59
,
96
,
79
,
26
,
52
,
94
,
110
,
16
,
76
,
75
,
122
,
126
,
8
,
7
,
38
,
37
,
79
,
116
,
115
,
112
,
6
,
75
,
74
,
56
,
25
,
24
,
37
,
36
,
42
,
124
,
123
,
50
,
28
,
124
,
123
,
102
,
60
,
59
,
97
,
96
,
79
,
27
,
26
,
52
,
95
,
94
,
110
,
16
,
76
,
75
,
123
,
122
,
126
,
7
,
37
,
79
,
115
,
112
,
7
,
6
,
74
,
57
,
56
,
24
,
36
,
42
,
123
,
50
,
29
,
28
,
123
,
103
,
102
,
59
,
96
,
80
,
79
,
26
,
53
,
52
,
94
,
110
,
17
,
16
,
75
,
122
,
127
,
126
,
79
,
78
,
108
,
22
,
50
,
59
,
58
,
55
,
77
,
85
,
18
,
17
,
127
,
96
,
95
,
107
,
113
,
66
,
121
,
99
,
66
,
45
,
3
,
2
,
39
,
22
,
97
,
123
,
37
,
53
,
87
,
19
,
18
,
65
,
69
,
111
,
110
,
12
,
54
,
102
,
91
,
90
,
87
,
109
,
40
,
50
,
49
,
31
,
0
,
127
,
11
,
17
,
98
,
25
,
3
,
98
,
77
,
65
,
35
,
34
,
71
,
54
,
1
,
27
,
30
,
69
,
85
,
119
,
51
,
50
,
97
,
101
,
38
,
37
,
67
,
109
,
26
,
18
,
17
,
14
,
36
,
105
,
104
,
86
,
55
,
54
,
66
,
72
,
25
,
80
,
58
,
25
,
4
,
99
,
90
,
89
,
126
,
109
,
56
,
82
,
44
,
124
,
12
,
46
,
106
,
105
,
24
,
28
,
27
,
11
,
10
,
123
,
40
,
25
,
82
,
67
,
119
,
118
,
103
,
115
,
100
,
123
,
9
,
122
,
0
,
78
,
77
,
62
,
45
,
59
,
44
,
28
,
27
,
12
,
39
,
24
,
45
,
30
,
126
,
111
,
53
,
38
,
17
,
31
,
16
,
126
,
111
,
91
,
105
,
90
,
18
,
63
,
62
,
47
,
99
,
84
,
68
,
82
,
67
,
29
,
14
,
41
,
55
,
40
,
11
,
97
,
82
,
113
,
98
,
5
,
19
,
4
,
79
,
78
,
63
,
125
,
110
,
115
,
1
,
114
,
110
,
109
,
12
,
11
,
53
,
13
,
90
,
89
,
86
,
108
,
93
,
49
,
48
,
30
,
127
,
126
,
11
,
10
,
16
,
98
,
97
,
24
,
2
,
98
,
97
,
76
,
34
,
33
,
71
,
70
,
53
,
1
,
0
,
26
,
69
,
68
,
84
,
118
,
50
,
49
,
97
,
96
,
100
,
127
,
68
,
126
,
98
,
28
,
12
,
70
,
107
,
48
,
106
,
45
,
103
,
67
,
125
,
74
,
66
,
7
,
65
,
117
,
47
,
16
,
85
,
15
,
97
,
27
,
103
,
33
,
56
,
114
,
111
,
41
,
89
,
19
,
56
,
114
,
35
,
93
,
51
,
120
,
50
,
29
,
87
,
12
,
70
,
87
,
17
,
113
,
43
,
27
,
85
,
43
,
101
,
77
,
7
,
76
,
67
,
8
,
66
,
55
,
113
,
59
,
117
,
10
,
56
,
127
,
116
,
63
,
93
,
7
,
10
,
43
,
40
,
63
,
62
,
2
,
113
,
112
,
80
,
92
,
98
,
51
,
106
,
85
,
84
,
51
,
31
,
30
,
115
,
24
,
8
,
7
,
82
,
109
,
108
,
107
,
22
,
38
,
73
,
72
,
3
,
50
,
55
,
54
,
81
,
22
,
21
,
51
,
93
,
2
,
1
,
126
,
20
,
62
,
89
,
88
,
70
,
39
,
38
,
50
,
56
,
110
,
9
,
64
,
42
,
9
,
116
,
74
,
73
,
110
,
93
,
40
,
66
,
108
,
124
,
30
,
90
,
89
,
8
,
12
,
101
,
3
,
45
,
82
,
81
,
78
,
101
,
100
,
1
,
40
,
23
,
22
,
118
,
2
,
8
,
89
,
16
,
123
,
122
,
89
,
69
,
68
,
25
,
62
,
46
,
45
,
120
,
19
,
18
,
60
,
76
,
111
,
110
,
37
,
41
,
88
,
93
,
92
,
11
,
10
,
111
,
40
,
13
,
82
,
55
,
119
,
118
,
91
,
115
,
88
,
111
,
9
,
110
,
114
,
78
,
77
,
50
,
33
,
59
,
32
,
28
,
27
,
0
,
39
,
12
,
45
,
18
,
126
,
99
,
53
,
26
,
5
,
31
,
4
,
126
,
99
,
79
,
105
,
78
,
63
,
62
,
35
,
99
,
72
,
56
,
82
,
55
,
16
,
29
,
2
,
29
,
55
,
28
,
97
,
70
,
113
,
86
,
121
,
19
,
120
,
79
,
78
,
51
,
125
,
98
,
103
,
1
,
102
,
93
,
54
,
92
,
84
,
122
,
126
,
36
,
50
,
73
,
34
,
72
,
31
,
69
,
53
,
91
,
32
,
121
,
31
,
103
,
13
,
110
,
71
,
109
,
83
,
121
,
89
,
127
,
42
,
80
,
97
,
7
,
75
,
113
,
42
,
80
,
21
,
59
,
17
,
106
,
16
,
15
,
53
,
126
,
36
,
73
,
111
,
99
,
9
,
13
,
51
,
29
,
67
,
63
,
101
,
33
,
122
,
32
,
41
,
79
,
45
,
83
,
16
,
122
,
15
,
121
,
24
,
45
,
23
,
87
,
65
,
124
,
102
,
123
,
101
,
120
,
98
,
14
,
120
,
74
,
83
,
61
,
82
,
60
,
64
,
42
,
33
,
11
,
32
,
10
,
23
,
44
,
22
,
50
,
28
,
110
,
3
,
109
,
58
,
36
,
36
,
14
,
110
,
3
,
109
,
110
,
88
,
68
,
46
,
67
,
45
,
83
,
104
,
82
,
87
,
65
,
13
,
34
,
12
,
60
,
38
,
81
,
102
,
80
,
118
,
96
,
24
,
2
,
84
,
62
,
83
,
61
,
109
,
2
,
108
,
6
,
112
,
13
,
122
,
72
,
121
,
71
,
102
,
23
,
101
,
65
,
15
,
102
,
52
,
101
,
51
,
98
,
48
,
120
,
70
,
125
,
61
,
11
,
60
,
10
,
42
,
120
,
11
,
89
,
10
,
88
,
101
,
22
,
100
,
28
,
106
,
60
,
109
,
59
,
36
,
114
,
14
,
92
,
60
,
109
,
59
,
88
,
38
,
123
,
46
,
124
,
45
,
123
,
33
,
82
,
32
,
65
,
15
,
91
,
12
,
90
,
38
,
116
,
31
,
80
,
30
,
96
,
46
,
2
,
80
,
62
,
12
,
61
,
11
,
59
,
108
,
58
,
112
,
62
,
91
,
65
,
49
,
64
,
94
,
8
,
86
,
44
,
41
,
63
,
19
,
3
,
113
,
81
,
93
,
99
,
52
,
107
,
85
,
52
,
31
,
116
,
25
,
8
,
83
,
109
,
23
,
39
,
73
,
4
,
51
,
55
,
37
,
36
,
66
,
108
,
17
,
16
,
13
,
35
,
25
,
104
,
103
,
85
,
54
,
53
,
65
,
71
,
24
,
79
,
57
,
104
,
24
,
3
,
89
,
88
,
125
,
108
,
55
,
81
,
123
,
11
,
45
,
105
,
104
,
23
,
27
,
89
,
119
,
33
,
75
,
69
,
66
,
89
,
88
,
28
,
11
,
10
,
106
,
118
,
124
,
77
,
4
,
111
,
110
,
77
,
57
,
56
,
13
,
50
,
34
,
33
,
108
,
7
,
6
,
48
,
64
,
99
,
98
,
41
,
29
,
76
,
81
,
80
,
93
,
62
,
22
,
106
,
109
,
45
,
10
,
7
,
99
,
27
,
40
,
39
,
1
,
70
,
69
,
31
,
111
,
73
,
20
,
19
,
109
,
16
,
106
,
1
,
38
,
0
,
107
,
106
,
68
,
51
,
88
,
50
,
28
,
57
,
56
,
18
,
69
,
68
,
30
,
74
,
36
,
28
,
27
,
117
,
82
,
44
,
23
,
60
,
22
,
28
,
27
,
117
,
97
,
6
,
96
,
92
,
91
,
53
,
1
,
0
,
90
,
74
,
111
,
73
,
59
,
58
,
20
,
47
,
84
,
46
,
14
,
127
,
126
,
88
,
14
,
104
,
11
,
48
,
10
,
108
,
107
,
69
,
27
,
26
,
116
,
121
,
30
,
120
,
7
,
22
,
97
,
100
,
6
,
17
,
27
,
70
,
111
,
8
,
83
,
8
,
38
,
80
,
116
,
113
,
8
,
7
,
105
,
75
,
58
,
57
,
25
,
37
,
43
,
124
,
51
,
30
,
29
,
124
,
104
,
103
,
60
,
97
,
81
,
80
,
27
,
54
,
53
,
95
,
111
,
18
,
17
,
76
,
123
,
0
,
127
,
46
,
45
,
76
,
75
,
117
,
113
,
26
,
25
,
22
,
44
,
113
,
112
,
94
,
63
,
62
,
75
,
74
,
80
,
34
,
33
,
88
,
66
,
34
,
33
,
12
,
43
,
98
,
97
,
7
,
6
,
117
,
65
,
64
,
90
,
5
,
4
,
20
,
54
,
114
,
113
,
33
,
32
,
36
,
114
,
16
,
58
,
94
,
91
,
113
,
53
,
35
,
3
,
3
,
15
,
21
,
102
,
29
,
7
,
102
,
81
,
38
,
75
,
58
,
5
,
31
,
35
,
73
,
89
,
123
,
54
,
101
,
105
,
93
,
92
,
43
,
123
,
122
,
73
,
36
,
115
,
18
,
73
,
72
,
23
,
69
,
20
,
43
,
91
,
42
,
32
,
31
,
110
,
93
,
13
,
92
,
110
,
109
,
60
,
122
,
121
,
72
,
127
,
78
,
81
,
80
,
31
,
7
,
86
,
65
,
113
,
64
,
81
,
80
,
31
,
11
,
59
,
10
,
17
,
16
,
95
,
54
,
53
,
4
,
116
,
36
,
115
,
112
,
111
,
62
,
89
,
9
,
88
,
52
,
51
,
2
,
67
,
18
,
53
,
101
,
52
,
33
,
32
,
111
,
80
,
79
,
30
,
35
,
83
,
34
,
71
,
70
,
100
,
14
,
51
,
50
,
47
,
69
,
56
,
10
,
9
,
119
,
88
,
87
,
99
,
105
,
58
,
113
,
91
,
58
,
37
,
39
,
123
,
122
,
31
,
14
,
89
,
115
,
29
,
45
,
79
,
11
,
10
,
57
,
61
,
11
,
37
,
25
,
98
,
30
,
0
,
60
,
42
,
102
,
78
,
10
,
75
,
7
,
30
,
97
,
29
,
37
,
97
,
80
,
19
,
79
,
115
,
47
,
127
,
59
,
5
,
65
,
86
,
18
,
13
,
73
,
52
,
119
,
51
,
86
,
18
,
126
,
65
,
125
,
22
,
82
,
59
,
119
,
103
,
42
,
102
,
117
,
49
,
76
,
15
,
75
,
57
,
117
,
73
,
5
,
40
,
107
,
39
,
38
,
98
,
85
,
17
,
22
,
89
,
21
,
46
,
45
,
75
,
117
,
26
,
25
,
22
,
44
,
30
,
113
,
112
,
94
,
63
,
62
,
74
,
80
,
33
,
88
,
66
,
33
,
12
,
65
,
98
,
97
,
6
,
117
,
64
,
90
,
4
,
20
,
54
,
114
,
113
,
32
,
36
,
42
,
41
,
72
,
71
,
113
,
110
,
22
,
21
,
18
,
40
,
109
,
108
,
90
,
59
,
58
,
71
,
70
,
76
,
30
,
29
,
84
,
62
,
30
,
29
,
8
,
94
,
93
,
3
,
2
,
113
,
61
,
60
,
86
,
43
,
1
,
0
,
16
,
50
,
110
,
109
,
29
,
28
,
32
,
82
,
127
,
112
,
29
,
26
,
71
,
62
,
107
,
59
,
104
,
127
,
81
,
126
,
21
,
66
,
49
,
3
,
48
,
127
,
99
,
16
,
111
,
28
,
117
,
34
,
70
,
115
,
125
,
42
,
21
,
103
,
20
,
70
,
115
,
95
,
49
,
94
,
6
,
51
,
43
,
88
,
72
,
26
,
71
,
101
,
18
,
45
,
127
,
44
,
41
,
86
,
57
,
102
,
9
,
91
,
8
,
22
,
67
,
69
,
114
,
119
,
73
,
118
,
126
,
125
,
27
,
69
,
106
,
105
,
102
,
124
,
0
,
65
,
64
,
46
,
15
,
14
,
26
,
32
,
113
,
40
,
18
,
113
,
92
,
100
,
50
,
49
,
86
,
69
,
16
,
42
,
84
,
100
,
6
,
66
,
65
,
112
,
116
};
short
Gen_shift_values_BG2_Z_128
[
1483
]
=
{
7
,
37
,
79
,
115
,
112
,
6
,
74
,
56
,
24
,
36
,
42
,
123
,
50
,
28
,
123
,
102
,
59
,
96
,
79
,
26
,
52
,
94
,
110
,
16
,
75
,
122
,
126
,
8
,
7
,
37
,
79
,
116
,
115
,
112
,
6
,
75
,
74
,
56
,
25
,
24
,
36
,
42
,
123
,
50
,
28
,
123
,
102
,
60
,
59
,
96
,
79
,
26
,
52
,
94
,
110
,
16
,
76
,
75
,
122
,
126
,
8
,
7
,
38
,
37
,
79
,
116
,
115
,
112
,
6
,
75
,
74
,
56
,
25
,
24
,
37
,
36
,
42
,
124
,
123
,
50
,
28
,
124
,
123
,
102
,
60
,
59
,
97
,
96
,
79
,
27
,
26
,
52
,
95
,
94
,
110
,
16
,
76
,
75
,
123
,
122
,
126
,
7
,
37
,
79
,
115
,
112
,
7
,
6
,
74
,
57
,
56
,
24
,
36
,
42
,
123
,
50
,
29
,
28
,
123
,
103
,
102
,
59
,
96
,
80
,
79
,
26
,
53
,
52
,
94
,
110
,
17
,
16
,
75
,
122
,
127
,
126
,
79
,
78
,
108
,
22
,
50
,
59
,
58
,
55
,
77
,
85
,
18
,
17
,
127
,
96
,
95
,
107
,
113
,
66
,
121
,
99
,
66
,
45
,
3
,
2
,
39
,
22
,
97
,
123
,
37
,
53
,
87
,
19
,
18
,
65
,
69
,
111
,
110
,
12
,
54
,
102
,
91
,
90
,
87
,
109
,
40
,
50
,
49
,
31
,
0
,
127
,
11
,
17
,
98
,
25
,
3
,
98
,
77
,
65
,
35
,
34
,
71
,
54
,
1
,
27
,
30
,
69
,
85
,
119
,
51
,
50
,
97
,
101
,
38
,
37
,
67
,
109
,
26
,
18
,
17
,
14
,
36
,
105
,
104
,
86
,
55
,
54
,
66
,
72
,
25
,
80
,
58
,
25
,
4
,
99
,
90
,
89
,
126
,
109
,
56
,
82
,
44
,
124
,
12
,
46
,
106
,
105
,
24
,
28
,
27
,
11
,
10
,
123
,
40
,
25
,
82
,
67
,
119
,
118
,
103
,
115
,
100
,
123
,
9
,
122
,
0
,
78
,
77
,
62
,
45
,
59
,
44
,
28
,
27
,
12
,
39
,
24
,
45
,
30
,
126
,
111
,
53
,
38
,
17
,
31
,
16
,
126
,
111
,
91
,
105
,
90
,
18
,
63
,
62
,
47
,
99
,
84
,
68
,
82
,
67
,
29
,
14
,
41
,
55
,
40
,
11
,
97
,
82
,
113
,
98
,
5
,
19
,
4
,
79
,
78
,
63
,
125
,
110
,
115
,
1
,
114
,
110
,
109
,
12
,
11
,
53
,
13
,
90
,
89
,
86
,
108
,
93
,
49
,
48
,
30
,
127
,
126
,
11
,
10
,
16
,
98
,
97
,
24
,
2
,
98
,
97
,
76
,
34
,
33
,
71
,
70
,
53
,
1
,
0
,
26
,
69
,
68
,
84
,
118
,
50
,
49
,
97
,
96
,
100
,
127
,
68
,
126
,
98
,
28
,
12
,
70
,
107
,
48
,
106
,
45
,
103
,
67
,
125
,
74
,
66
,
7
,
65
,
117
,
47
,
16
,
85
,
15
,
97
,
27
,
103
,
33
,
56
,
114
,
111
,
41
,
89
,
19
,
56
,
114
,
35
,
93
,
51
,
120
,
50
,
29
,
87
,
12
,
70
,
87
,
17
,
113
,
43
,
27
,
85
,
43
,
101
,
77
,
7
,
76
,
67
,
8
,
66
,
55
,
113
,
59
,
117
,
10
,
56
,
127
,
116
,
63
,
93
,
7
,
10
,
43
,
40
,
63
,
62
,
2
,
113
,
112
,
80
,
92
,
98
,
51
,
106
,
85
,
84
,
51
,
31
,
30
,
115
,
24
,
8
,
7
,
82
,
109
,
108
,
107
,
22
,
38
,
73
,
72
,
3
,
50
,
55
,
54
,
81
,
22
,
21
,
51
,
93
,
2
,
1
,
126
,
20
,
62
,
89
,
88
,
70
,
39
,
38
,
50
,
56
,
110
,
9
,
64
,
42
,
9
,
116
,
74
,
73
,
110
,
93
,
40
,
66
,
108
,
124
,
30
,
90
,
89
,
8
,
12
,
101
,
3
,
45
,
82
,
81
,
78
,
101
,
100
,
1
,
40
,
23
,
22
,
118
,
2
,
8
,
89
,
16
,
123
,
122
,
89
,
69
,
68
,
25
,
62
,
46
,
45
,
120
,
19
,
18
,
60
,
76
,
111
,
110
,
37
,
41
,
88
,
93
,
92
,
11
,
10
,
111
,
40
,
13
,
82
,
55
,
119
,
118
,
91
,
115
,
88
,
111
,
9
,
110
,
114
,
78
,
77
,
50
,
33
,
59
,
32
,
28
,
27
,
0
,
39
,
12
,
45
,
18
,
126
,
99
,
53
,
26
,
5
,
31
,
4
,
126
,
99
,
79
,
105
,
78
,
63
,
62
,
35
,
99
,
72
,
56
,
82
,
55
,
16
,
29
,
2
,
29
,
55
,
28
,
97
,
70
,
113
,
86
,
121
,
19
,
120
,
79
,
78
,
51
,
125
,
98
,
103
,
1
,
102
,
93
,
54
,
92
,
84
,
122
,
126
,
36
,
50
,
73
,
34
,
72
,
31
,
69
,
53
,
91
,
32
,
121
,
31
,
103
,
13
,
110
,
71
,
109
,
83
,
121
,
89
,
127
,
42
,
80
,
97
,
7
,
75
,
113
,
42
,
80
,
21
,
59
,
17
,
106
,
16
,
15
,
53
,
126
,
36
,
73
,
111
,
99
,
9
,
13
,
51
,
29
,
67
,
63
,
101
,
33
,
122
,
32
,
41
,
79
,
45
,
83
,
16
,
122
,
15
,
121
,
24
,
45
,
23
,
87
,
65
,
124
,
102
,
123
,
101
,
120
,
98
,
14
,
120
,
74
,
83
,
61
,
82
,
60
,
64
,
42
,
33
,
11
,
32
,
10
,
23
,
44
,
22
,
50
,
28
,
110
,
3
,
109
,
58
,
36
,
36
,
14
,
110
,
3
,
109
,
110
,
88
,
68
,
46
,
67
,
45
,
83
,
104
,
82
,
87
,
65
,
13
,
34
,
12
,
60
,
38
,
81
,
102
,
80
,
118
,
96
,
24
,
2
,
84
,
62
,
83
,
61
,
109
,
2
,
108
,
6
,
112
,
13
,
122
,
72
,
121
,
71
,
102
,
23
,
101
,
65
,
15
,
102
,
52
,
101
,
51
,
98
,
48
,
120
,
70
,
125
,
61
,
11
,
60
,
10
,
42
,
120
,
11
,
89
,
10
,
88
,
101
,
22
,
100
,
28
,
106
,
60
,
109
,
59
,
36
,
114
,
14
,
92
,
60
,
109
,
59
,
88
,
38
,
123
,
46
,
124
,
45
,
123
,
33
,
82
,
32
,
65
,
15
,
91
,
12
,
90
,
38
,
116
,
31
,
80
,
30
,
96
,
46
,
2
,
80
,
62
,
12
,
61
,
11
,
59
,
108
,
58
,
112
,
62
,
91
,
65
,
49
,
64
,
94
,
8
,
86
,
44
,
41
,
63
,
19
,
3
,
113
,
81
,
93
,
99
,
52
,
107
,
85
,
52
,
31
,
116
,
25
,
8
,
83
,
109
,
23
,
39
,
73
,
4
,
51
,
55
,
37
,
36
,
66
,
108
,
17
,
16
,
13
,
35
,
25
,
104
,
103
,
85
,
54
,
53
,
65
,
71
,
24
,
79
,
57
,
104
,
24
,
3
,
89
,
88
,
125
,
108
,
55
,
81
,
123
,
11
,
45
,
105
,
104
,
23
,
27
,
89
,
119
,
33
,
75
,
69
,
66
,
89
,
88
,
28
,
11
,
10
,
106
,
118
,
124
,
77
,
4
,
111
,
110
,
77
,
57
,
56
,
13
,
50
,
34
,
33
,
108
,
7
,
6
,
48
,
64
,
99
,
98
,
41
,
29
,
76
,
81
,
80
,
93
,
62
,
22
,
106
,
109
,
45
,
10
,
7
,
99
,
27
,
40
,
39
,
1
,
70
,
69
,
31
,
111
,
73
,
20
,
19
,
109
,
16
,
106
,
1
,
38
,
0
,
107
,
106
,
68
,
51
,
88
,
50
,
28
,
57
,
56
,
18
,
69
,
68
,
30
,
74
,
36
,
28
,
27
,
117
,
82
,
44
,
23
,
60
,
22
,
28
,
27
,
117
,
97
,
6
,
96
,
92
,
91
,
53
,
1
,
0
,
90
,
74
,
111
,
73
,
59
,
58
,
20
,
47
,
84
,
46
,
14
,
127
,
126
,
88
,
14
,
104
,
11
,
48
,
10
,
108
,
107
,
69
,
27
,
26
,
116
,
121
,
30
,
120
,
7
,
22
,
97
,
100
,
6
,
17
,
27
,
70
,
111
,
8
,
83
,
8
,
38
,
80
,
116
,
113
,
8
,
7
,
105
,
75
,
58
,
57
,
25
,
37
,
43
,
124
,
51
,
30
,
29
,
124
,
104
,
103
,
60
,
97
,
81
,
80
,
27
,
54
,
53
,
95
,
111
,
18
,
17
,
76
,
123
,
0
,
127
,
46
,
45
,
76
,
75
,
117
,
113
,
26
,
25
,
22
,
44
,
113
,
112
,
94
,
63
,
62
,
75
,
74
,
80
,
34
,
33
,
88
,
66
,
34
,
33
,
12
,
43
,
98
,
97
,
7
,
6
,
117
,
65
,
64
,
90
,
5
,
4
,
20
,
54
,
114
,
113
,
33
,
32
,
36
,
114
,
16
,
58
,
94
,
91
,
113
,
53
,
35
,
3
,
3
,
15
,
21
,
102
,
29
,
7
,
102
,
81
,
38
,
75
,
58
,
5
,
31
,
35
,
73
,
89
,
123
,
54
,
101
,
105
,
93
,
92
,
43
,
123
,
122
,
73
,
36
,
115
,
18
,
73
,
72
,
23
,
69
,
20
,
43
,
91
,
42
,
32
,
31
,
110
,
93
,
13
,
92
,
110
,
109
,
60
,
122
,
121
,
72
,
127
,
78
,
81
,
80
,
31
,
7
,
86
,
65
,
113
,
64
,
81
,
80
,
31
,
11
,
59
,
10
,
17
,
16
,
95
,
54
,
53
,
4
,
116
,
36
,
115
,
112
,
111
,
62
,
89
,
9
,
88
,
52
,
51
,
2
,
67
,
18
,
53
,
101
,
52
,
33
,
32
,
111
,
80
,
79
,
30
,
35
,
83
,
34
,
71
,
70
,
100
,
14
,
51
,
50
,
47
,
69
,
56
,
10
,
9
,
119
,
88
,
87
,
99
,
105
,
58
,
113
,
91
,
58
,
37
,
39
,
123
,
122
,
31
,
14
,
89
,
115
,
29
,
45
,
79
,
11
,
10
,
57
,
61
,
11
,
37
,
25
,
98
,
30
,
0
,
60
,
42
,
102
,
78
,
10
,
75
,
7
,
30
,
97
,
29
,
37
,
97
,
80
,
19
,
79
,
115
,
47
,
127
,
59
,
5
,
65
,
86
,
18
,
13
,
73
,
52
,
119
,
51
,
86
,
18
,
126
,
65
,
125
,
22
,
82
,
59
,
119
,
103
,
42
,
102
,
117
,
49
,
76
,
15
,
75
,
57
,
117
,
73
,
5
,
40
,
107
,
39
,
38
,
98
,
85
,
17
,
22
,
89
,
21
,
46
,
45
,
75
,
117
,
26
,
25
,
22
,
44
,
30
,
113
,
112
,
94
,
63
,
62
,
74
,
80
,
33
,
88
,
66
,
33
,
12
,
65
,
98
,
97
,
6
,
117
,
64
,
90
,
4
,
20
,
54
,
114
,
113
,
32
,
36
,
42
,
41
,
72
,
71
,
113
,
110
,
22
,
21
,
18
,
40
,
109
,
108
,
90
,
59
,
58
,
71
,
70
,
76
,
30
,
29
,
84
,
62
,
30
,
29
,
8
,
94
,
93
,
3
,
2
,
113
,
61
,
60
,
86
,
43
,
1
,
0
,
16
,
50
,
110
,
109
,
29
,
28
,
32
,
82
,
127
,
112
,
29
,
26
,
71
,
62
,
107
,
59
,
104
,
127
,
81
,
126
,
21
,
66
,
49
,
3
,
48
,
127
,
99
,
16
,
111
,
28
,
117
,
34
,
70
,
115
,
125
,
42
,
21
,
103
,
20
,
70
,
115
,
95
,
49
,
94
,
6
,
51
,
43
,
88
,
72
,
26
,
71
,
101
,
18
,
45
,
127
,
44
,
41
,
86
,
57
,
102
,
9
,
91
,
8
,
22
,
67
,
69
,
114
,
119
,
73
,
118
,
126
,
125
,
27
,
69
,
106
,
105
,
102
,
124
,
0
,
65
,
64
,
46
,
15
,
14
,
26
,
32
,
113
,
40
,
18
,
113
,
92
,
100
,
50
,
49
,
86
,
69
,
16
,
42
,
84
,
100
,
6
,
66
,
65
,
112
,
116
};
\ No newline at end of file
openair1/PHY/CODING/defs.h
View file @
34746b24
...
@@ -571,7 +571,8 @@ uint32_t crcbit (uint8_t * ,
...
@@ -571,7 +571,8 @@ uint32_t crcbit (uint8_t * ,
int16_t
reverseBits
(
int32_t
,
int32_t
);
int16_t
reverseBits
(
int32_t
,
int32_t
);
void
phy_viterbi_dot11
(
int8_t
*
,
uint8_t
*
,
uint16_t
);
void
phy_viterbi_dot11
(
int8_t
*
,
uint8_t
*
,
uint16_t
);
short
*
ldpc_decoder
(
short
*
msgChannel
,
short
block_length
,
short
No_iteration
,
double
rate
);
//short *ldpc_decoder(short *msgChannel,short block_length,short No_iteration,double rate);
short
*
ldpc_encoder
(
char
*
test_input
,
char
*
channel_input
,
short
block_length
,
double
rate
);
//short *ldpc_encoder(char *test_input,char* channel_input,short block_length,double rate);
int
ldpc_encoder
(
unsigned
char
*
test_input
,
unsigned
char
*
channel_input
,
short
block_length
,
double
rate
);
#endif
#endif
openair1/PHY/CODING/ldpc_encoder.c
View file @
34746b24
...
@@ -116,11 +116,14 @@ short *choose_generator_matrix(short BG,short Zc)
...
@@ -116,11 +116,14 @@ short *choose_generator_matrix(short BG,short Zc)
break
;
break
;
}
}
}
}
/*
else
if
(
BG
==
2
)
else
if
(
BG
==
2
)
{
{
switch
(
Zc
)
{
case
2
:
Gen_shift_values
=
(
short
*
)
Gen_shift_values_BG2_Z_2
;
case
2
:
Gen_shift_values
=
(
short
*
)
Gen_shift_values_BG2_Z_2
;
break
;
break
;
/*
case 3: Gen_shift_values=(short*) Gen_shift_values_BG2_Z_3;
case 3: Gen_shift_values=(short*) Gen_shift_values_BG2_Z_3;
break;
break;
case 4: Gen_shift_values=(short*) Gen_shift_values_BG2_Z_4;
case 4: Gen_shift_values=(short*) Gen_shift_values_BG2_Z_4;
...
@@ -195,8 +198,10 @@ short *choose_generator_matrix(short BG,short Zc)
...
@@ -195,8 +198,10 @@ short *choose_generator_matrix(short BG,short Zc)
break;
break;
case 120: Gen_shift_values=(short*) Gen_shift_values_BG2_Z_120;
case 120: Gen_shift_values=(short*) Gen_shift_values_BG2_Z_120;
break;
break;
*/
case
128
:
Gen_shift_values
=
(
short
*
)
Gen_shift_values_BG2_Z_128
;
case
128
:
Gen_shift_values
=
(
short
*
)
Gen_shift_values_BG2_Z_128
;
break
;
break
;
/*
case 144: Gen_shift_values=(short*) Gen_shift_values_BG2_Z_144;
case 144: Gen_shift_values=(short*) Gen_shift_values_BG2_Z_144;
break;
break;
case 160: Gen_shift_values=(short*) Gen_shift_values_BG2_Z_160;
case 160: Gen_shift_values=(short*) Gen_shift_values_BG2_Z_160;
...
@@ -221,31 +226,34 @@ short *choose_generator_matrix(short BG,short Zc)
...
@@ -221,31 +226,34 @@ short *choose_generator_matrix(short BG,short Zc)
break;
break;
case 384: Gen_shift_values=(short*) Gen_shift_values_BG2_Z_384;
case 384: Gen_shift_values=(short*) Gen_shift_values_BG2_Z_384;
break;
break;
}
*/
*/
}
}
return
Gen_shift_values
;
return
Gen_shift_values
;
}
}
int
ldpc_encoder
(
char
*
test_input
,
char
*
channel_input
,
short
block_length
,
double
rate
)
int
ldpc_encoder
(
unsigned
char
*
test_input
,
unsigned
char
*
channel_input
,
short
block_length
,
double
rate
)
{
{
char
c
[
22
*
384
];
//padded input, unpacked, max size
unsigned
char
c
[
22
*
384
];
//padded input, unpacked, max size
char
d
[
68
*
384
];
//coded output, unpacked, max size
unsigned
char
d
[
68
*
384
];
//coded output, unpacked, max size
unsigned
char
channel_temp
,
temp
;
short
*
Gen_shift_values
,
*
no_shift_values
,
*
pointer_shift_values
;
short
*
Gen_shift_values
,
*
no_shift_values
,
*
pointer_shift_values
;
short
BG
,
Zc
,
Kb
,
nrows
,
ncols
,
channel_temp
;
short
BG
,
Zc
,
Kb
,
nrows
,
ncols
;
int
i
,
i1
,
i2
,
i3
,
i4
,
i5
,
t
,
t
emp
,
temp_prime
;
int
i
,
i1
,
i2
,
i3
,
i4
,
i5
,
t
,
t
1
,
temp_prime
;
int
no_punctured_columns
,
output_length
;
int
no_punctured_columns
,
removed_bit
;
//Table of possible lifting sizes
//Table of possible lifting sizes
short
lift_size
[
51
]
=
{
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
18
,
20
,
22
,
24
,
26
,
28
,
30
,
32
,
36
,
40
,
44
,
48
,
52
,
56
,
60
,
64
,
72
,
80
,
88
,
96
,
104
,
112
,
120
,
128
,
144
,
160
,
176
,
192
,
208
,
224
,
240
,
256
,
288
,
320
,
352
,
384
};
short
lift_size
[
51
]
=
{
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
18
,
20
,
22
,
24
,
26
,
28
,
30
,
32
,
36
,
40
,
44
,
48
,
52
,
56
,
60
,
64
,
72
,
80
,
88
,
96
,
104
,
112
,
120
,
128
,
144
,
160
,
176
,
192
,
208
,
224
,
240
,
256
,
288
,
320
,
352
,
384
};
//determine number of bits in codeword
//determine number of bits in codeword
if
(
block_length
>
3840
)
//
if (block_length>3840)
{
//
{
BG
=
1
;
BG
=
1
;
Kb
=
22
;
Kb
=
22
;
nrows
=
46
;
//parity check bits
nrows
=
46
;
//parity check bits
ncols
=
22
;
//info bits
ncols
=
22
;
//info bits
}
/*
}
else if (block_length<=3840)
else if (block_length<=3840)
{
{
BG=2;
BG=2;
...
@@ -259,7 +267,7 @@ int ldpc_encoder(char *test_input,char* channel_input,short block_length,double
...
@@ -259,7 +267,7 @@ int ldpc_encoder(char *test_input,char* channel_input,short block_length,double
Kb = 8;
Kb = 8;
else
else
Kb = 6;
Kb = 6;
}
}
*/
//find minimum value in all sets of lifting size
//find minimum value in all sets of lifting size
for
(
i1
=
0
;
i1
<
51
;
i1
++
)
for
(
i1
=
0
;
i1
<
51
;
i1
++
)
...
@@ -275,8 +283,8 @@ int ldpc_encoder(char *test_input,char* channel_input,short block_length,double
...
@@ -275,8 +283,8 @@ int ldpc_encoder(char *test_input,char* channel_input,short block_length,double
// load base graph of generator matrix
// load base graph of generator matrix
if
(
BG
==
1
)
if
(
BG
==
1
)
{
{
no_shift_values
=
(
short
*
)
no_shift_values_BG1
;
no_shift_values
=
(
short
*
)
no_shift_values_BG1
;
pointer_shift_values
=
(
short
*
)
pointer_shift_values_BG1
;
pointer_shift_values
=
(
short
*
)
pointer_shift_values_BG1
;
}
}
else
if
(
BG
==
2
)
else
if
(
BG
==
2
)
...
@@ -286,15 +294,22 @@ int ldpc_encoder(char *test_input,char* channel_input,short block_length,double
...
@@ -286,15 +294,22 @@ int ldpc_encoder(char *test_input,char* channel_input,short block_length,double
}
}
Gen_shift_values
=
choose_generator_matrix
(
BG
,
Zc
);
Gen_shift_values
=
choose_generator_matrix
(
BG
,
Zc
);
no_punctured_columns
=
(
int
)((
nrows
+
Kb
-
2
)
*
Zc
-
block_length
/
rate
)
/
Zc
;
no_punctured_columns
=
(
int
)((
nrows
+
Kb
-
2
)
*
Zc
-
block_length
/
rate
)
/
Zc
;
removed_bit
=
(
Kb
+
nrows
-
no_punctured_columns
-
2
)
*
Zc
-
(
int
)(
block_length
/
rate
);
//printf("%d\n",no_punctured_columns);
//printf("%d\n",no_punctured_columns);
output_length
=
(
Kb
+
nrows
-
no_punctured_columns
)
*
Zc
;
//
output_length = (Kb+nrows-no_punctured_columns) * Zc;
// unpack input
// unpack input
memset
(
c
,
0
,
sizeof
(
unsigned
char
)
*
Kb
*
Zc
);
for
(
i
=
0
;
i
<
block_length
;
i
++
)
for
(
i
=
0
;
i
<
block_length
;
i
++
)
c
[
i
]
=
(
test_input
[
i
/
8
]
>>
(
i
%
8
))
&
1
;
{
//c[i] = test_input[i/8]<<(i%8);
// c[i]=c[i]>>7&1;
c
[
i
]
=
(
test_input
[
i
/
8
]
&
(
1
<<
(
i
&
7
)))
>>
(
i
&
7
);
}
// parity check part
// parity check part
for
(
i2
=
0
;
i2
<
Zc
;
i2
++
)
for
(
i2
=
0
;
i2
<
Zc
;
i2
++
)
{
{
...
@@ -303,7 +318,7 @@ int ldpc_encoder(char *test_input,char* channel_input,short block_length,double
...
@@ -303,7 +318,7 @@ int ldpc_encoder(char *test_input,char* channel_input,short block_length,double
for
(
i5
=
0
;
i5
<
Kb
;
i5
++
)
for
(
i5
=
0
;
i5
<
Kb
;
i5
++
)
{
{
temp
=
c
[
i5
*
Zc
];
temp
=
c
[
i5
*
Zc
];
memmove
(
&
c
[
i5
*
Zc
],
&
c
[
i5
*
Zc
+
1
],
(
Zc
-
1
)
*
sizeof
(
short
));
memmove
(
&
c
[
i5
*
Zc
],
&
c
[
i5
*
Zc
+
1
],
(
Zc
-
1
)
*
sizeof
(
unsigned
char
));
c
[
i5
*
Zc
+
Zc
-
1
]
=
temp
;
c
[
i5
*
Zc
+
Zc
-
1
]
=
temp
;
}
}
...
@@ -321,17 +336,31 @@ int ldpc_encoder(char *test_input,char* channel_input,short block_length,double
...
@@ -321,17 +336,31 @@ int ldpc_encoder(char *test_input,char* channel_input,short block_length,double
}
}
d
[
t
+
i1
*
Zc
]
=
channel_temp
;
d
[
t
+
i1
*
Zc
]
=
channel_temp
;
//channel_input[t+i1*Zc]=channel_temp;
}
}
}
}
// information part
// information part
memcpy
(
d
,
c
,
Kb
*
Zc
*
sizeof
(
short
));
memcpy
(
d
,
c
,
Kb
*
Zc
*
sizeof
(
unsigned
char
));
// puncture columns
for
(
i
=
2
*
Zc
,
t1
=
0
;
i
<
(
Kb
+
nrows
-
no_punctured_columns
)
*
Zc
-
removed_bit
;
i
++
)
{
channel_input
[
t1
]
=
d
[
i
];
t1
++
;
}
//memcpy(channel_input,c,Kb*Zc*sizeof(unsigned char));
/*
//pack into output
//pack into output
memset
(
channel_input
,
0
,
output_length
/
8
*
sizeof
(
char
));
memset(channel_input,0,output_length/8*sizeof(
unsigned
char));
for (i=0;i<output_length;i++)
for (i=0;i<output_length;i++)
channel_input
[
i
/
8
]
=
channel_input
[
i
/
8
]
|
(
d
[
i
]
<<
(
i
%
8
));
{
//printf("[%d]=%d\n",i,d[i]);
d[i]=d[i] << 7;
channel_input[i/8] = channel_input[i/8] | (d[i] >> (i%8));
}
*/
return
0
;
return
0
;
}
}
openair1/PHY/CODING/nr_segmentation.c
View file @
34746b24
...
@@ -53,9 +53,9 @@ int32_t nr_segmentation(unsigned char *input_buffer,
...
@@ -53,9 +53,9 @@ int32_t nr_segmentation(unsigned char *input_buffer,
*
C
=*
C
+
1
;
*
C
=*
C
+
1
;
Bprime
=
B
+
((
*
C
)
*
L
);
Bprime
=
B
+
((
*
C
)
*
L
);
#ifdef DEBUG_SEGMENTATION
//
#ifdef DEBUG_SEGMENTATION
printf
(
"Bprime %d
\n
"
,
Bprime
);
printf
(
"Bprime %d
\n
"
,
Bprime
);
#endif
//
#endif
}
}
if
((
*
C
)
>
MAX_NUM_DLSCH_SEGMENTS
)
{
if
((
*
C
)
>
MAX_NUM_DLSCH_SEGMENTS
)
{
...
@@ -65,7 +65,7 @@ int32_t nr_segmentation(unsigned char *input_buffer,
...
@@ -65,7 +65,7 @@ int32_t nr_segmentation(unsigned char *input_buffer,
// Find K+
// Find K+
Bprime_by_C
=
Bprime
/
(
*
C
);
Bprime_by_C
=
Bprime
/
(
*
C
);
if
(
Bprime
<=
192
)
{
/*
if (Bprime <=192) {
Kb = 6;
Kb = 6;
} else if (Bprime <=560) {
} else if (Bprime <=560) {
Kb = 8;
Kb = 8;
...
@@ -73,11 +73,17 @@ int32_t nr_segmentation(unsigned char *input_buffer,
...
@@ -73,11 +73,17 @@ int32_t nr_segmentation(unsigned char *input_buffer,
Kb = 9;
Kb = 9;
} else if (Bprime <=3840) {
} else if (Bprime <=3840) {
Kb = 10;;
Kb = 10;;
}
else
{
} else {
*/
Kb
=
22
;
Kb
=
22
;
}
//}
if
((
Bprime_by_C
%
Kb
)
>
0
)
Z
=
(
Bprime_by_C
/
Kb
)
+
1
;
Z
=
(
Bprime_by_C
/
Kb
)
+
1
;
else
Z
=
(
Bprime_by_C
/
Kb
);
printf
(
"nr segmetation B %d Bprime %d Bprime_by_C %d z %d
\n
"
,
B
,
Bprime
,
Bprime_by_C
,
Z
);
if
(
Z
<=
2
)
{
if
(
Z
<=
2
)
{
*
Kplus
=
2
;
*
Kplus
=
2
;
...
@@ -106,9 +112,9 @@ int32_t nr_segmentation(unsigned char *input_buffer,
...
@@ -106,9 +112,9 @@ int32_t nr_segmentation(unsigned char *input_buffer,
if
(
*
Kplus
<
Z
)
if
(
*
Kplus
<
Z
)
*
Kplus
=
*
Kplus
+
8
;
*
Kplus
=
*
Kplus
+
8
;
#ifdef DEBUG_SEGMENTATION
//
#ifdef DEBUG_SEGMENTATION
printf
(
"Z_by_C %d , Kplus2 %d
\n
"
,
Z
,
*
Kplus
);
printf
(
"Z_by_C %d , Kplus2 %d
\n
"
,
Z
,
*
Kplus
);
#endif
//
#endif
*
Kminus
=
(
*
Kplus
-
8
);
*
Kminus
=
(
*
Kplus
-
8
);
}
else
if
(
Z
<=
256
)
{
// increase by 4 bytes til here
}
else
if
(
Z
<=
256
)
{
// increase by 4 bytes til here
*
Kplus
=
(
Z
>>
4
)
<<
4
;
*
Kplus
=
(
Z
>>
4
)
<<
4
;
...
@@ -128,13 +134,14 @@ int32_t nr_segmentation(unsigned char *input_buffer,
...
@@ -128,13 +134,14 @@ int32_t nr_segmentation(unsigned char *input_buffer,
//msg("nr_segmentation.c: Illegal codeword size !!!\n");
//msg("nr_segmentation.c: Illegal codeword size !!!\n");
return
(
-
1
);
return
(
-
1
);
}
}
*
Zout
=
*
Kplus
;
*
Kplus
=
*
Kplus
*
Kb
;
*
Kplus
=
*
Kplus
*
Kb
;
*
Kminus
=
*
Kminus
*
Kb
;
*
Kminus
=
*
Kminus
*
Kb
;
*
Zout
=
Z
;
*
F
=
((
*
C
)
*
(
*
Kplus
)
-
(
Bprime
));
*
F
=
((
*
C
)
*
(
*
Kplus
)
-
(
Bprime
));
printf
(
"final nr seg output Z %d Kplus %d F %d
\n
"
,
*
Zout
,
*
Kplus
,
*
F
);
#ifdef DEBUG_SEGMENTATION
#ifdef DEBUG_SEGMENTATION
printf
(
"C %d, Kplus %d, Kminus %d, Bprime_bytes %d, Bprime %d, F %d
\n
"
,
*
C
,
*
Kplus
,
*
Kminus
,
Bprime
>>
3
,
Bprime
,
*
F
);
printf
(
"C %d, Kplus %d, Kminus %d, Bprime_bytes %d, Bprime %d, F %d
\n
"
,
*
C
,
*
Kplus
,
*
Kminus
,
Bprime
>>
3
,
Bprime
,
*
F
);
#endif
#endif
...
@@ -149,10 +156,10 @@ int32_t nr_segmentation(unsigned char *input_buffer,
...
@@ -149,10 +156,10 @@ int32_t nr_segmentation(unsigned char *input_buffer,
for
(
r
=
0
;
r
<*
C
;
r
++
)
{
for
(
r
=
0
;
r
<*
C
;
r
++
)
{
if
(
r
<
(
B
%
(
*
C
)))
//
if (r<(B%(*C)))
Kprime
=
*
Kplus
;
Kprime
=
*
Kplus
;
else
//
else
Kprime
=
*
Kminus
;
//
Kprime = *Kminus;
while
(
k
<
((
Kprime
-
L
)
>>
3
))
{
while
(
k
<
((
Kprime
-
L
)
>>
3
))
{
output_buffers
[
r
][
k
]
=
input_buffer
[
s
];
output_buffers
[
r
][
k
]
=
input_buffer
[
s
];
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment