b19413b9403027f9acf30a7742b4a3d545e8e8f8
[dragonfly.git] / sys / net / i4b / driver / i4b_tel.c
1 /*
2  * Copyright (c) 1997, 2001 Hellmuth Michaelis. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23  * SUCH DAMAGE.
24  *
25  *---------------------------------------------------------------------------
26  *
27  *      i4b_tel.c - device driver for ISDN telephony
28  *      --------------------------------------------
29  *
30  * $FreeBSD: src/sys/i4b/driver/i4b_tel.c,v 1.10.2.4 2001/12/16 15:12:57 hm Exp $
31  * $DragonFly: src/sys/net/i4b/driver/i4b_tel.c,v 1.15 2006/12/22 23:44:55 swildner Exp $
32  *
33  *      last edit-date: [Sat Aug 11 18:07:05 2001]
34  *
35  *---------------------------------------------------------------------------*/
36
37 #include "use_i4btel.h"
38
39 #if NI4BTEL > 0
40
41 #undef I4BTELDEBUG
42
43 #include <sys/param.h>
44 #include <sys/systm.h>
45
46 #include <sys/poll.h>
47
48 #include <sys/conf.h>
49 #include <sys/uio.h>
50 #include <sys/kernel.h>
51 #include <sys/mbuf.h>
52 #include <sys/socket.h>
53 #include <net/if.h>
54 #include <sys/thread2.h>
55 #include <sys/tty.h>
56
57 #ifdef DEVFS
58 #include <sys/devfsext.h>
59 #endif
60
61 #include <net/i4b/include/machine/i4b_ioctl.h>
62 #include <net/i4b/include/machine/i4b_tel_ioctl.h>
63 #include <net/i4b/include/machine/i4b_debug.h>
64
65 #include "../include/i4b_global.h"
66 #include "../include/i4b_mbuf.h"
67 #include "../include/i4b_l3l4.h"
68 #include "../layer4/i4b_l4.h"
69
70 /* minor number: lower 6 bits = unit number */
71
72 #define UNITBITS        6
73 #define UNITMASK        0x3f
74 #define UNIT(n)         (minor(n) & UNITMASK)
75
76 /* minor number: upper 2 bits = function number */
77
78 #define FUNCMASK        0x03
79 #define FUNC(n)         (((minor(n)) >> UNITBITS) & FUNCMASK)
80
81 #define FUNCTEL         0       /* 0 = normal i4btel device     */
82 #define FUNCDIAL        1       /* 1 = i4bteld dialout device   */
83
84 #define NOFUNCS         2       /* number of device classes     */
85
86 typedef struct {
87
88         /* used only in func = FUNCTEL */
89
90         drvr_link_t             drvr_linktab;   /* driver linktab */
91         isdn_link_t             *isdn_linktab;  /* isdn linktab */
92         int                     audiofmt;       /* audio format conversion */
93         u_char                  *rcvttab;       /* conversion table on read */
94         u_char                  *wcvttab;       /* conversion table on write */
95         call_desc_t             *cdp;           /* call descriptor pointer */
96
97         /* used only in func = FUNCDIAL */
98
99         char                    result;         /* result code for dial dev */  
100
101         /* used in func = FUNCDIAL and func = FUNCTEL*/
102         
103         int                     devstate;       /* state of this unit   */
104 #define ST_IDLE         0x00            /* idle */
105 #define ST_CONNECTED    0x01            /* isdn connected state */
106 #define ST_ISOPEN       0x02            /* userland opened */
107 #define ST_RDWAITDATA   0x04            /* userland read waiting */
108 #define ST_WRWAITEMPTY  0x08            /* userland write waiting */
109 #define ST_TONE         0x10            /* tone generator */
110
111         struct selinfo          selp;           /* select / poll */
112
113         struct i4b_tel_tones    tones;
114         int                     toneidx;
115         int                     toneomega;
116         int                     tonefreq;
117
118 } tel_sc_t;
119
120 static tel_sc_t tel_sc[NI4BTEL][NOFUNCS];
121         
122 /* forward decl */
123
124 static void tel_rx_data_rdy(int unit);
125 static void tel_tx_queue_empty(int unit);
126 static void tel_init_linktab(int unit);
127 static void tel_connect(int unit, void *cdp);
128 static void tel_disconnect(int unit, void *cdp);
129 static void tel_tone(tel_sc_t *sc);
130
131 /* audio format conversion tables */
132 static unsigned char a2u_tab[];
133 static unsigned char u2a_tab[];
134 static unsigned char bitreverse[];
135 static u_char sinetab[];
136
137 #define PDEVSTATIC      static
138
139 PDEVSTATIC d_open_t     i4btelopen;
140 PDEVSTATIC d_close_t    i4btelclose;
141 PDEVSTATIC d_read_t     i4btelread;
142 PDEVSTATIC d_write_t    i4btelwrite;
143 PDEVSTATIC d_ioctl_t    i4btelioctl;
144
145 PDEVSTATIC d_poll_t i4btelpoll;
146 #define POLLFIELD i4btelpoll
147
148 #define CDEV_MAJOR 56
149
150 static struct dev_ops i4btel_ops = {
151         { "i4btel", CDEV_MAJOR, 0 },
152         .d_open =       i4btelopen,
153         .d_close =      i4btelclose,
154         .d_read =       i4btelread,
155         .d_write =      i4btelwrite,
156         .d_ioctl =      i4btelioctl,
157         .d_poll =       POLLFIELD,
158 };
159
160 PDEVSTATIC void i4btelattach(void *);
161
162 PSEUDO_SET(i4btelattach, i4b_tel);
163
164 /*===========================================================================*
165  *                      DEVICE DRIVER ROUTINES
166  *===========================================================================*/
167
168 /*---------------------------------------------------------------------------*
169  *      interface attach routine
170  *---------------------------------------------------------------------------*/
171 PDEVSTATIC void
172 i4btelattach(void *dummy)
173 {
174         int i, j;
175
176         kprintf("i4btel: %d ISDN telephony interface device(s) attached\n", NI4BTEL);
177         
178         for(i=0; i < NI4BTEL; i++)
179         {
180                 for(j=0; j < NOFUNCS; j++)
181                 {
182                         tel_sc[i][j].devstate = ST_IDLE;
183                         tel_sc[i][j].audiofmt = CVT_NONE;
184                         tel_sc[i][j].rcvttab = 0;
185                         tel_sc[i][j].wcvttab = 0;
186                         tel_sc[i][j].result = 0;
187
188                         switch(j)
189                         {
190                                 case FUNCTEL:   /* normal i4btel device */
191                                         make_dev(&i4btel_ops, i,
192                                                 UID_ROOT, GID_WHEEL,
193                                                 0600, "i4btel%d", i);
194                                         break;
195                                 
196                                 case FUNCDIAL:  /* i4bteld dialout device */
197                                         make_dev(&i4btel_ops, i+(1<<UNITBITS),
198                                                 UID_ROOT, GID_WHEEL,
199                                                 0600, "i4bteld%d", i);
200                                         break;
201                         }
202                 }
203                 tel_init_linktab(i);            
204         }
205 }
206
207 /*---------------------------------------------------------------------------*
208  *      open tel device
209  *---------------------------------------------------------------------------*/
210 PDEVSTATIC int
211 i4btelopen(struct dev_open_args *ap)
212 {
213         cdev_t dev = ap->a_head.a_dev;
214         int unit = UNIT(dev);
215         int func = FUNC(dev);
216         
217         tel_sc_t *sc;
218         
219         if(unit >= NI4BTEL)
220                 return(ENXIO);
221
222         sc = &tel_sc[unit][func];               
223
224         if(sc->devstate & ST_ISOPEN)
225                 return(EBUSY);
226
227         sc->devstate |= ST_ISOPEN;              
228
229         if(func == FUNCDIAL)
230         {
231                 sc->result = 0;
232         }
233         
234         return(0);
235 }
236
237 /*---------------------------------------------------------------------------*
238  *      close tel device
239  *---------------------------------------------------------------------------*/
240 PDEVSTATIC int
241 i4btelclose(struct dev_close_args *ap)
242 {
243         cdev_t dev = ap->a_head.a_dev;
244         int unit = UNIT(dev);
245         int func = FUNC(dev);
246         tel_sc_t *sc;
247         int error = 0;
248         
249         if(unit > NI4BTEL)
250                 return(ENXIO);
251
252         sc = &tel_sc[unit][func];               
253
254         crit_enter();
255         sc->devstate &= ~ST_TONE;               
256
257         if((func == FUNCTEL) &&
258            (sc->isdn_linktab != NULL && sc->isdn_linktab->tx_queue != NULL))
259         {
260                 while(!(IF_QEMPTY(sc->isdn_linktab->tx_queue)))
261                 {
262                         sc->devstate |= ST_WRWAITEMPTY;
263         
264                         if((error = tsleep((caddr_t) &sc->isdn_linktab->tx_queue,
265                                         PCATCH, "wtcl", 0)) != 0)
266                         {
267                                 break;
268                         }
269                 }
270                 sc->devstate &= ~ST_WRWAITEMPTY;                
271         }
272
273         sc->devstate &= ~ST_ISOPEN;             
274         crit_exit();
275         wakeup((caddr_t) &sc->tones);
276
277         return(error);
278 }
279
280 /*---------------------------------------------------------------------------*
281  *      i4btelioctl - device driver ioctl routine
282  *---------------------------------------------------------------------------*/
283 PDEVSTATIC int
284 i4btelioctl(struct dev_ioctl_args *ap)
285 {
286         cdev_t dev = ap->a_head.a_dev;
287         int unit = UNIT(dev);
288         int func = FUNC(dev);
289         int error = 0;
290         struct mbuf *m;
291
292         tel_sc_t *sc = &tel_sc[unit][func];
293
294         if(func == FUNCTEL)
295         {
296                 switch(ap->a_cmd)
297                 {
298                         case I4B_TEL_GETAUDIOFMT:
299                                 *(int *)ap->a_data = sc->audiofmt;
300                                 break;
301                         
302                         case I4B_TEL_SETAUDIOFMT:
303                                 switch (*(int *)ap->a_data)
304                                 {
305                                         case CVT_NONE:
306                                                 sc->rcvttab = 0;
307                                                 sc->wcvttab = 0;
308                                                 break;
309                                         case CVT_ALAW2ULAW:
310                                                 /* ISDN: a-law */
311                                                 /* user: u-law */ 
312                                                 sc->rcvttab = a2u_tab;
313                                                 sc->wcvttab = u2a_tab;
314                                                 break;
315                                         case CVT_ULAW2ALAW:
316                                                 /* ISDN: u-law */
317                                                 /* user: a-law */ 
318                                                 sc->rcvttab = u2a_tab;
319                                                 sc->wcvttab = a2u_tab;
320                                                 break;
321                                         default:
322                                                 error = ENODEV;
323                                                 break;
324                                 }
325                                 if(error == 0)
326                                         sc->audiofmt = *(int *)ap->a_data;
327                                 break;
328         
329                         case I4B_TEL_EMPTYINPUTQUEUE:
330                                 crit_enter();
331                                 while((sc->devstate & ST_CONNECTED)     &&
332                                         (sc->devstate & ST_ISOPEN)      &&
333                                         !IF_QEMPTY(sc->isdn_linktab->rx_queue))
334                                 {
335                                         IF_DEQUEUE(sc->isdn_linktab->rx_queue, m);
336                                         if(m)
337                                                 i4b_Bfreembuf(m);
338                                 }
339                                 crit_exit();
340                                 break;
341
342                         case I4B_TEL_VR_REQ:
343                         {
344                                 msg_vr_req_t *mvr;
345
346                                 mvr = (msg_vr_req_t *)ap->a_data;
347
348                                 mvr->version = VERSION;
349                                 mvr->release = REL;
350                                 mvr->step = STEP;                       
351                                 break;
352                         }
353                         case I4B_TEL_TONES:
354                         {
355                                 struct i4b_tel_tones *tt;
356
357                                 tt = (struct i4b_tel_tones *)ap->a_data;
358                                 crit_enter();
359                                 while ((sc->devstate & ST_TONE) && 
360                                     sc->tones.duration[sc->toneidx] != 0) {
361                                         if((error = tsleep((caddr_t) &sc->tones,
362                                             PCATCH, "rtone", 0 )) != 0) {
363                                                 crit_exit();
364                                                 return(error);
365                                         }
366                                 } 
367                                 if(!(sc->devstate & ST_ISOPEN)) {
368                                         crit_exit();
369                                         return (EIO);
370                                 }
371                                 if(!(sc->devstate & ST_CONNECTED)) {
372                                         crit_exit();
373                                         return (EIO);
374                                 }
375
376                                 sc->tones = *tt;
377                                 sc->toneidx = 0;
378                                 sc->tonefreq = tt->frequency[0];
379                                 sc->devstate |= ST_TONE;
380                                 crit_exit();
381                                 tel_tone(sc);
382                                 break;
383                         }
384         
385                         default:
386                                 error = ENOTTY;
387                                 break;
388                 }
389         }
390         else if(func == FUNCDIAL)
391         {
392                 switch(ap->a_cmd)
393                 {
394                         default:
395                                 error = ENOTTY;
396                                 break;
397                 }
398         }               
399         return(error);
400 }
401
402 /*---------------------------------------------------------------------------*
403  *      read from tel device
404  *---------------------------------------------------------------------------*/
405 PDEVSTATIC int
406 i4btelread(struct dev_read_args *ap)
407 {
408         cdev_t dev = ap->a_head.a_dev;
409         struct uio *uio = ap->a_uio;
410         int unit = UNIT(dev);
411         int func = FUNC(dev);
412
413         struct mbuf *m;
414         int error = 0;
415
416         tel_sc_t *sc = &tel_sc[unit][func];
417         
418         if(!(sc->devstate & ST_ISOPEN))
419                 return(EIO);
420
421         if(func == FUNCTEL)
422         {
423                 crit_enter();
424
425                 while((sc->devstate & ST_ISOPEN)        &&
426                       (sc->devstate & ST_CONNECTED)     &&
427                       IF_QEMPTY(sc->isdn_linktab->rx_queue))            
428                 {
429                         sc->devstate |= ST_RDWAITDATA;
430
431                         NDBGL4(L4_TELDBG, "i4btel%d, queue empty!", unit);
432
433                         if((error = tsleep((caddr_t) &sc->isdn_linktab->rx_queue,
434                                                 PCATCH, "rtel", 0 )) != 0)
435                         {
436                                 sc->devstate &= ~ST_RDWAITDATA;
437                                 crit_exit();
438                                 return(error);
439                         }
440                 }
441         
442                 if(!(sc->devstate & ST_ISOPEN))
443                 {
444                         crit_exit();
445                         return(EIO);
446                 }
447         
448                 if(!(sc->devstate & ST_CONNECTED))
449                 {
450                         crit_exit();
451                         return(EIO);
452                 }
453                 
454         
455                 IF_DEQUEUE(sc->isdn_linktab->rx_queue, m);
456                 
457                 if(m && m->m_len > 0)
458                 {
459                         int i;
460
461                         for(i = 0; i < m->m_len; i++)
462                         {
463                                 /* always reverse bit order from line */
464                                 mtod(m,u_char *)[i] = bitreverse[mtod(m,u_char *)[i]];
465
466                                 /* convert if necessary */
467                                 if(sc->rcvttab)
468                                         mtod(m,u_char *)[i] = sc->rcvttab[mtod(m,u_char *)[i]];
469                         }
470                         error = uiomove(m->m_data, m->m_len, uio);
471
472                         NDBGL4(L4_TELDBG, "i4btel%d, mbuf (%d bytes), uiomove %d!", unit, m->m_len, error);
473                 }
474                 else
475                 {
476                         NDBGL4(L4_TELDBG, "i4btel%d, empty mbuf from queue!", unit);
477                         error = EIO;
478                 }
479                         
480                 if(m)
481                         i4b_Bfreembuf(m);
482         
483                 crit_exit();
484         }
485         else if(func == FUNCDIAL)
486         {
487                 crit_enter();
488                 while((sc->result == 0) && (sc->devstate & ST_ISOPEN))
489                 {
490                         sc->devstate |= ST_RDWAITDATA;
491         
492                         if((error = tsleep((caddr_t) &sc->result,
493                                                 PCATCH, "rtel1", 0 )) != 0)
494                         {
495                                 sc->devstate &= ~ST_RDWAITDATA;
496                                 crit_exit();
497                                 return(error);
498                         }
499                 }
500         
501                 if(!(sc->devstate & ST_ISOPEN))
502                 {
503                         crit_exit();
504                         return(EIO);
505                 }
506         
507                 if(sc->result != 0)
508                 {
509                         error = uiomove(&sc->result, 1, uio);
510                         sc->result = 0;
511                 }
512                 else
513                 {
514                         error = EIO;
515                 }
516
517                 crit_exit();
518         }
519         return(error);
520 }
521
522 /*---------------------------------------------------------------------------*
523  *      write to tel device
524  *---------------------------------------------------------------------------*/
525 PDEVSTATIC int
526 i4btelwrite(struct dev_write_args *ap)
527 {
528         cdev_t dev = ap->a_head.a_dev;
529         struct uio *uio = ap->a_uio;
530         int unit = UNIT(dev);
531         int func = FUNC(dev);
532         struct mbuf *m;
533         int error = 0;
534         tel_sc_t *sc = &tel_sc[unit][func];
535         
536         if(!(sc->devstate & ST_ISOPEN))
537         {
538                 return(EIO);
539         }
540
541         if(func == FUNCTEL)
542         {
543                 crit_enter();
544                 
545                 if(!(sc->devstate & ST_CONNECTED)) {
546                         crit_exit();
547                         return(EIO);
548                 }
549                         
550                 sc->devstate &= ~ST_TONE;               
551                 while((IF_QFULL(sc->isdn_linktab->tx_queue)) &&
552                       (sc->devstate & ST_ISOPEN))
553                 {
554                         sc->devstate |= ST_WRWAITEMPTY;
555
556                         if((error = tsleep((caddr_t) &sc->isdn_linktab->tx_queue,
557                                         PCATCH, "wtel", 0)) != 0)
558                         {
559                                 sc->devstate &= ~ST_WRWAITEMPTY;
560                                 crit_exit();
561                                 return(error);
562                         }
563                 }
564         
565                 if(!(sc->devstate & ST_ISOPEN))
566                 {
567                         crit_exit();
568                         return(EIO);
569                 }
570         
571                 if(!(sc->devstate & ST_CONNECTED))
572                 {
573                         crit_exit();
574                         return(EIO);
575                 }
576
577                 if((m = i4b_Bgetmbuf(BCH_MAX_DATALEN)) != NULL)
578                 {
579                         int i;
580                         
581                         m->m_len = min(BCH_MAX_DATALEN, uio->uio_resid);
582         
583                         error = uiomove(m->m_data, m->m_len, uio);
584         
585                         for(i = 0; i < m->m_len; i++)
586                         {
587                                 /* convert if necessary */
588                                 if(sc->wcvttab)
589                                         mtod(m,u_char *)[i] = sc->wcvttab[mtod(m,u_char *)[i]];
590
591                                 /* always reverse bitorder to line */
592                                 mtod(m,u_char *)[i] = bitreverse[mtod(m,u_char *)[i]];
593                         }
594
595                         if(IF_QFULL(sc->isdn_linktab->tx_queue))
596                                 m_freem(m);
597                         else
598                                 IF_ENQUEUE(sc->isdn_linktab->tx_queue, m);
599                         (*sc->isdn_linktab->bch_tx_start)(sc->isdn_linktab->unit, sc->isdn_linktab->channel);
600                 }
601         
602                 crit_exit();
603         }
604         else if(func == FUNCDIAL)
605         {
606 #define CMDBUFSIZ 80 
607                 char cmdbuf[CMDBUFSIZ];
608                 int len = min(CMDBUFSIZ-1, uio->uio_resid);
609         
610                 error = uiomove(cmdbuf, len, uio);
611
612                 if(cmdbuf[0] == CMD_DIAL)
613                 {
614                         i4b_l4_dialoutnumber(BDRV_TEL, unit, len-1, &cmdbuf[1]);
615                 }
616                 else if(cmdbuf[0] == CMD_HUP)
617                 {
618                         i4b_l4_drvrdisc(BDRV_TEL, unit);
619                 }
620                 else if(cmdbuf[0] == CMD_KEYP)
621                 {
622                         i4b_l4_keypad(BDRV_TEL, unit, len-1, &cmdbuf[1]);
623                 }
624         }
625         else
626         {
627                 error = EIO;
628         }               
629         
630         return(error);
631 }
632
633 /*---------------------------------------------------------------------------*
634  *      
635  *---------------------------------------------------------------------------*/
636 #define NTONESAMP 32
637 static void
638 tel_tone(tel_sc_t *sc)
639 {
640         struct mbuf *m;
641         u_char *p;
642         int i;
643
644         if((m = i4b_Bgetmbuf(NTONESAMP)) == NULL) {
645                 kprintf("no mbuf in tel_tone\n");
646                 return;
647         }
648         p = m->m_data;
649         m->m_len = 0;
650         for (i = 0; i < NTONESAMP && (sc->devstate & ST_TONE); i++) {
651
652                 if (sc->tones.duration[sc->toneidx] > 0) {
653                         if (--sc->tones.duration[sc->toneidx] == 0) {
654                                 sc->toneidx++;
655                                 if (sc->toneidx == I4B_TEL_MAXTONES) {
656                                         sc->devstate &= ~ST_TONE;
657                                         sc->toneomega = 0;
658                                         sc->tonefreq = 0;
659                                 } else if (sc->tones.frequency[sc->toneidx] == 0 &&
660                                            sc->tones.duration[sc->toneidx] == 0) {
661                                         sc->devstate &= ~ST_TONE;
662                                         sc->toneomega = 0;
663                                         sc->tonefreq = 0;
664                                 } else {
665                                         sc->tonefreq = sc->tones.frequency[sc->toneidx];
666                                 }
667                                 if (sc->tones.duration[sc->toneidx] == 0) {
668                                         wakeup((caddr_t) &sc->tones);
669                                 }
670                         }
671                 }
672
673                 sc->toneomega += sc->tonefreq;
674                 if (sc->toneomega >= 8000)
675                         sc->toneomega -= 8000;
676                 *p++ = bitreverse[sinetab[sc->toneomega]];
677                 m->m_len++;
678         }
679         IF_ENQUEUE(sc->isdn_linktab->tx_queue, m);
680         (*sc->isdn_linktab->bch_tx_start)(sc->isdn_linktab->unit, sc->isdn_linktab->channel);
681 }
682
683 /*---------------------------------------------------------------------------*
684  *      device driver poll
685  *---------------------------------------------------------------------------*/
686 PDEVSTATIC int
687 i4btelpoll(struct dev_poll_args *ap)
688 {
689         cdev_t dev = ap->a_head.a_dev;
690         int revents = 0;        /* Events we found */
691         int unit = UNIT(dev);
692         int func = FUNC(dev);   
693
694         tel_sc_t *sc = &tel_sc[unit][func];
695         
696         crit_enter();
697
698         if(!(sc->devstate & ST_ISOPEN))
699         {
700                 NDBGL4(L4_TELDBG, "i4btel%d, !ST_ISOPEN", unit);
701                 crit_exit();
702                 ap->a_events = 0;
703                 return(0);
704         }
705
706         if(func == FUNCTEL)
707         {
708                 /*
709                  * Writes are OK if we are connected and the
710                  * transmit queue can take them
711                  */
712                  
713                 if((ap->a_events & (POLLOUT|POLLWRNORM))        &&
714                         (sc->devstate & ST_CONNECTED)   &&
715                         (sc->isdn_linktab != NULL)      &&
716                         (!IF_QFULL(sc->isdn_linktab->tx_queue)))
717                 {
718                         NDBGL4(L4_TELDBG, "i4btel%d, POLLOUT", unit);
719                         revents |= (ap->a_events & (POLLOUT|POLLWRNORM));
720                 }
721                 
722                 /* ... while reads are OK if we have any data */
723         
724                 if((ap->a_events & (POLLIN|POLLRDNORM)) &&
725                         (sc->devstate & ST_CONNECTED)   &&
726                         (sc->isdn_linktab != NULL)      &&
727                         (!IF_QEMPTY(sc->isdn_linktab->rx_queue)))
728                 {
729                         NDBGL4(L4_TELDBG, "i4btel%d, POLLIN", unit);
730                         revents |= (ap->a_events & (POLLIN|POLLRDNORM));
731                 }
732                         
733                 if(revents == 0)
734                 {
735                         NDBGL4(L4_TELDBG, "i4btel%d, selrecord", unit);
736                         selrecord(curthread, &sc->selp);
737                 }
738         }
739         else if(func == FUNCDIAL)
740         {
741                 if(ap->a_events & (POLLOUT|POLLWRNORM))
742                 {
743                         NDBGL4(L4_TELDBG, "i4bteld%d,  POLLOUT", unit);
744                         revents |= (ap->a_events & (POLLOUT|POLLWRNORM));
745                 }
746
747                 if(ap->a_events & (POLLIN|POLLRDNORM))
748                 {
749                         NDBGL4(L4_TELDBG, "i4bteld%d,  POLLIN, result = %d", unit, sc->result);
750                         if(sc->result != 0)
751                                 revents |= (ap->a_events & (POLLIN|POLLRDNORM));
752                 }
753                         
754                 if(revents == 0)
755                 {
756                         NDBGL4(L4_TELDBG, "i4bteld%d,  selrecord", unit);
757                         selrecord(curthread, &sc->selp);
758                 }
759         }
760         crit_exit();
761         ap->a_events = revents;
762         return (0);
763 }
764
765 /*===========================================================================*
766  *                      ISDN INTERFACE ROUTINES
767  *===========================================================================*/
768
769 /*---------------------------------------------------------------------------*
770 *       this routine is called from L4 handler at connect time
771  *---------------------------------------------------------------------------*/
772 static void
773 tel_connect(int unit, void *cdp)
774 {
775         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
776
777         /* audio device */
778         
779         sc->cdp = (call_desc_t *)cdp;
780
781         sc->devstate |= ST_CONNECTED;
782
783         /* dialer device */
784         
785         sc = &tel_sc[unit][FUNCDIAL];
786
787         if(sc->devstate == ST_ISOPEN)
788         {
789                 sc->result = RSP_CONN;
790
791                 if(sc->devstate & ST_RDWAITDATA)
792                 {
793                         sc->devstate &= ~ST_RDWAITDATA;
794                         wakeup((caddr_t) &sc->result);
795                 }
796                 selwakeup(&sc->selp);
797         }
798 }
799
800 /*---------------------------------------------------------------------------*
801  *      this routine is called from L4 handler at disconnect time
802  *---------------------------------------------------------------------------*/
803 static void
804 tel_disconnect(int unit, void *cdp)
805 {
806 /*      call_desc_t *cd = (call_desc_t *)cdp; */
807
808         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
809         
810         /* audio device */
811         
812         sc->devstate &= ~ST_CONNECTED;
813
814         if(sc->devstate & ST_RDWAITDATA)
815         {
816                 sc->devstate &= ~ST_RDWAITDATA;
817                 wakeup((caddr_t) &sc->isdn_linktab->rx_queue);
818         }
819
820         if(sc->devstate & ST_WRWAITEMPTY)
821         {
822                 sc->devstate &= ~ST_WRWAITEMPTY;
823                 wakeup((caddr_t) &sc->isdn_linktab->tx_queue);
824         }
825
826         /* dialer device */
827         
828         sc = &tel_sc[unit][FUNCDIAL];
829
830         if(sc->devstate & ST_ISOPEN)
831         {
832                 sc->result = RSP_HUP;
833
834                 if(sc->devstate & ST_RDWAITDATA)
835                 {
836                         sc->devstate &= ~ST_RDWAITDATA;
837                         wakeup((caddr_t) &sc->result);
838                 }
839                 selwakeup(&sc->selp);
840
841                 if (sc->devstate & ST_TONE) {
842                         sc->devstate &= ~ST_TONE;
843                         wakeup((caddr_t) &sc->tones);
844                 }
845         }
846 }
847
848 /*---------------------------------------------------------------------------*
849  *      feedback from daemon in case of dial problems
850  *---------------------------------------------------------------------------*/
851 static void
852 tel_dialresponse(int unit, int status, cause_t cause)
853 {       
854         tel_sc_t *sc = &tel_sc[unit][FUNCDIAL];
855
856         NDBGL4(L4_TELDBG, "i4btel%d,  status=%d, cause=0x%4x", unit, status, cause);
857
858         if((sc->devstate == ST_ISOPEN) && status)
859         {       
860                 sc->result = RSP_NOA;
861
862                 if(sc->devstate & ST_RDWAITDATA)
863                 {
864                         sc->devstate &= ~ST_RDWAITDATA;
865                         wakeup((caddr_t) &sc->result);
866                 }
867                 selwakeup(&sc->selp);
868         }
869 }
870         
871 /*---------------------------------------------------------------------------*
872  *      interface up/down
873  *---------------------------------------------------------------------------*/
874 static void
875 tel_updown(int unit, int updown)
876 {
877 }
878         
879 /*---------------------------------------------------------------------------*
880  *      this routine is called from the HSCX interrupt handler
881  *      when a new frame (mbuf) has been received and was put on
882  *      the rx queue.
883  *---------------------------------------------------------------------------*/
884 static void
885 tel_rx_data_rdy(int unit)
886 {
887         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
888         
889         if(sc->devstate & ST_RDWAITDATA)
890         {
891                 sc->devstate &= ~ST_RDWAITDATA;
892                 wakeup((caddr_t) &sc->isdn_linktab->rx_queue);
893         }
894         selwakeup(&sc->selp);
895 }
896
897 /*---------------------------------------------------------------------------*
898  *      this routine is called from the HSCX interrupt handler
899  *      when the last frame has been sent out and there is no
900  *      further frame (mbuf) in the tx queue.
901  *---------------------------------------------------------------------------*/
902 static void
903 tel_tx_queue_empty(int unit)
904 {
905         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
906
907         if(sc->devstate & ST_WRWAITEMPTY)
908         {
909                 sc->devstate &= ~ST_WRWAITEMPTY;
910                 wakeup((caddr_t) &sc->isdn_linktab->tx_queue);
911         }
912         if(sc->devstate & ST_TONE) {
913                 tel_tone(sc);
914         } else {
915                 selwakeup(&sc->selp);
916         }
917 }
918
919 /*---------------------------------------------------------------------------*
920  *      this routine is called from the HSCX interrupt handler
921  *      each time a packet is received or transmitted.
922  *---------------------------------------------------------------------------*/
923 static void
924 tel_activity(int unit, int rxtx)
925 {
926         if(tel_sc[unit][FUNCTEL].cdp)
927                 tel_sc[unit][FUNCTEL].cdp->last_active_time = SECOND;
928 }
929
930 /*---------------------------------------------------------------------------*
931  *      return this drivers linktab address
932  *---------------------------------------------------------------------------*/
933 drvr_link_t *
934 tel_ret_linktab(int unit)
935 {
936         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
937         
938         tel_init_linktab(unit);
939         return(&sc->drvr_linktab);
940 }
941
942 /*---------------------------------------------------------------------------*
943  *      setup the isdn_linktab for this driver
944  *---------------------------------------------------------------------------*/
945 void
946 tel_set_linktab(int unit, isdn_link_t *ilt)
947 {
948         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
949         sc->isdn_linktab = ilt;
950 }
951
952 /*---------------------------------------------------------------------------*
953  *      initialize this drivers linktab
954  *---------------------------------------------------------------------------*/
955 static void
956 tel_init_linktab(int unit)
957 {
958         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
959         
960         sc->drvr_linktab.unit = unit;
961         sc->drvr_linktab.bch_rx_data_ready = tel_rx_data_rdy;
962         sc->drvr_linktab.bch_tx_queue_empty = tel_tx_queue_empty;
963         sc->drvr_linktab.bch_activity = tel_activity;   
964         sc->drvr_linktab.line_connected = tel_connect;
965         sc->drvr_linktab.line_disconnected = tel_disconnect;
966         sc->drvr_linktab.dial_response = tel_dialresponse;
967         sc->drvr_linktab.updown_ind = tel_updown;       
968 }
969
970 /*===========================================================================*
971  *      AUDIO FORMAT CONVERSION (produced by running g711conv)
972  *===========================================================================*/
973
974 /*---------------------------------------------------------------------------*
975  *      A-law to u-law conversion
976  *---------------------------------------------------------------------------*/
977 static unsigned char a2u_tab[256] = {
978 /* 00 */        0x2a, 0x2b, 0x28, 0x29, 0x2e, 0x2f, 0x2c, 0x2d, 
979 /* 08 */        0x22, 0x23, 0x20, 0x21, 0x26, 0x27, 0x24, 0x25, 
980 /* 10 */        0x39, 0x3a, 0x37, 0x38, 0x3d, 0x3e, 0x3b, 0x3c, 
981 /* 18 */        0x31, 0x32, 0x30, 0x30, 0x35, 0x36, 0x33, 0x34, 
982 /* 20 */        0x0a, 0x0b, 0x08, 0x09, 0x0e, 0x0f, 0x0c, 0x0d, 
983 /* 28 */        0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05, 
984 /* 30 */        0x1a, 0x1b, 0x18, 0x19, 0x1e, 0x1f, 0x1c, 0x1d, 
985 /* 38 */        0x12, 0x13, 0x10, 0x11, 0x16, 0x17, 0x14, 0x15, 
986 /* 40 */        0x62, 0x63, 0x60, 0x61, 0x66, 0x67, 0x64, 0x65, 
987 /* 48 */        0x5d, 0x5d, 0x5c, 0x5c, 0x5f, 0x5f, 0x5e, 0x5e, 
988 /* 50 */        0x74, 0x76, 0x70, 0x72, 0x7c, 0x7e, 0x78, 0x7a, 
989 /* 58 */        0x6a, 0x6b, 0x68, 0x69, 0x6e, 0x6f, 0x6c, 0x6d, 
990 /* 60 */        0x48, 0x49, 0x46, 0x47, 0x4c, 0x4d, 0x4a, 0x4b, 
991 /* 68 */        0x40, 0x41, 0x3f, 0x3f, 0x44, 0x45, 0x42, 0x43, 
992 /* 70 */        0x56, 0x57, 0x54, 0x55, 0x5a, 0x5b, 0x58, 0x59, 
993 /* 78 */        0x4f, 0x4f, 0x4e, 0x4e, 0x52, 0x53, 0x50, 0x51, 
994 /* 80 */        0xaa, 0xab, 0xa8, 0xa9, 0xae, 0xaf, 0xac, 0xad, 
995 /* 88 */        0xa2, 0xa3, 0xa0, 0xa1, 0xa6, 0xa7, 0xa4, 0xa5, 
996 /* 90 */        0xb9, 0xba, 0xb7, 0xb8, 0xbd, 0xbe, 0xbb, 0xbc, 
997 /* 98 */        0xb1, 0xb2, 0xb0, 0xb0, 0xb5, 0xb6, 0xb3, 0xb4, 
998 /* a0 */        0x8a, 0x8b, 0x88, 0x89, 0x8e, 0x8f, 0x8c, 0x8d, 
999 /* a8 */        0x82, 0x83, 0x80, 0x81, 0x86, 0x87, 0x84, 0x85, 
1000 /* b0 */        0x9a, 0x9b, 0x98, 0x99, 0x9e, 0x9f, 0x9c, 0x9d, 
1001 /* b8 */        0x92, 0x93, 0x90, 0x91, 0x96, 0x97, 0x94, 0x95, 
1002 /* c0 */        0xe2, 0xe3, 0xe0, 0xe1, 0xe6, 0xe7, 0xe4, 0xe5, 
1003 /* c8 */        0xdd, 0xdd, 0xdc, 0xdc, 0xdf, 0xdf, 0xde, 0xde, 
1004 /* d0 */        0xf4, 0xf6, 0xf0, 0xf2, 0xfc, 0xfe, 0xf8, 0xfa, 
1005 /* d8 */        0xea, 0xeb, 0xe8, 0xe9, 0xee, 0xef, 0xec, 0xed, 
1006 /* e0 */        0xc8, 0xc9, 0xc6, 0xc7, 0xcc, 0xcd, 0xca, 0xcb, 
1007 /* e8 */        0xc0, 0xc1, 0xbf, 0xbf, 0xc4, 0xc5, 0xc2, 0xc3, 
1008 /* f0 */        0xd6, 0xd7, 0xd4, 0xd5, 0xda, 0xdb, 0xd8, 0xd9, 
1009 /* f8 */        0xcf, 0xcf, 0xce, 0xce, 0xd2, 0xd3, 0xd0, 0xd1
1010 };
1011
1012 /*---------------------------------------------------------------------------*
1013  *      u-law to A-law conversion
1014  *---------------------------------------------------------------------------*/
1015 static unsigned char u2a_tab[256] = {
1016 /* 00 */        0x2a, 0x2b, 0x28, 0x29, 0x2e, 0x2f, 0x2c, 0x2d, 
1017 /* 08 */        0x22, 0x23, 0x20, 0x21, 0x26, 0x27, 0x24, 0x25, 
1018 /* 10 */        0x3a, 0x3b, 0x38, 0x39, 0x3e, 0x3f, 0x3c, 0x3d, 
1019 /* 18 */        0x32, 0x33, 0x30, 0x31, 0x36, 0x37, 0x34, 0x35, 
1020 /* 20 */        0x0a, 0x0b, 0x08, 0x09, 0x0e, 0x0f, 0x0c, 0x0d, 
1021 /* 28 */        0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05, 
1022 /* 30 */        0x1b, 0x18, 0x19, 0x1e, 0x1f, 0x1c, 0x1d, 0x12, 
1023 /* 38 */        0x13, 0x10, 0x11, 0x16, 0x17, 0x14, 0x15, 0x6a, 
1024 /* 40 */        0x68, 0x69, 0x6e, 0x6f, 0x6c, 0x6d, 0x62, 0x63, 
1025 /* 48 */        0x60, 0x61, 0x66, 0x67, 0x64, 0x65, 0x7a, 0x78, 
1026 /* 50 */        0x7e, 0x7f, 0x7c, 0x7d, 0x72, 0x73, 0x70, 0x71, 
1027 /* 58 */        0x76, 0x77, 0x74, 0x75, 0x4b, 0x49, 0x4f, 0x4d, 
1028 /* 60 */        0x42, 0x43, 0x40, 0x41, 0x46, 0x47, 0x44, 0x45, 
1029 /* 68 */        0x5a, 0x5b, 0x58, 0x59, 0x5e, 0x5f, 0x5c, 0x5d, 
1030 /* 70 */        0x52, 0x52, 0x53, 0x53, 0x50, 0x50, 0x51, 0x51, 
1031 /* 78 */        0x56, 0x56, 0x57, 0x57, 0x54, 0x54, 0x55, 0x55, 
1032 /* 80 */        0xaa, 0xab, 0xa8, 0xa9, 0xae, 0xaf, 0xac, 0xad, 
1033 /* 88 */        0xa2, 0xa3, 0xa0, 0xa1, 0xa6, 0xa7, 0xa4, 0xa5, 
1034 /* 90 */        0xba, 0xbb, 0xb8, 0xb9, 0xbe, 0xbf, 0xbc, 0xbd, 
1035 /* 98 */        0xb2, 0xb3, 0xb0, 0xb1, 0xb6, 0xb7, 0xb4, 0xb5, 
1036 /* a0 */        0x8a, 0x8b, 0x88, 0x89, 0x8e, 0x8f, 0x8c, 0x8d, 
1037 /* a8 */        0x82, 0x83, 0x80, 0x81, 0x86, 0x87, 0x84, 0x85, 
1038 /* b0 */        0x9b, 0x98, 0x99, 0x9e, 0x9f, 0x9c, 0x9d, 0x92, 
1039 /* b8 */        0x93, 0x90, 0x91, 0x96, 0x97, 0x94, 0x95, 0xea, 
1040 /* c0 */        0xe8, 0xe9, 0xee, 0xef, 0xec, 0xed, 0xe2, 0xe3, 
1041 /* c8 */        0xe0, 0xe1, 0xe6, 0xe7, 0xe4, 0xe5, 0xfa, 0xf8, 
1042 /* d0 */        0xfe, 0xff, 0xfc, 0xfd, 0xf2, 0xf3, 0xf0, 0xf1, 
1043 /* d8 */        0xf6, 0xf7, 0xf4, 0xf5, 0xcb, 0xc9, 0xcf, 0xcd, 
1044 /* e0 */        0xc2, 0xc3, 0xc0, 0xc1, 0xc6, 0xc7, 0xc4, 0xc5, 
1045 /* e8 */        0xda, 0xdb, 0xd8, 0xd9, 0xde, 0xdf, 0xdc, 0xdd, 
1046 /* f0 */        0xd2, 0xd2, 0xd3, 0xd3, 0xd0, 0xd0, 0xd1, 0xd1, 
1047 /* f8 */        0xd6, 0xd6, 0xd7, 0xd7, 0xd4, 0xd4, 0xd5, 0xd5
1048 };
1049   
1050 /*---------------------------------------------------------------------------*
1051  *      reverse bits in a byte
1052  *---------------------------------------------------------------------------*/
1053 static unsigned char bitreverse[256] = {
1054 /* 00 */        0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, 
1055 /* 08 */        0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, 
1056 /* 10 */        0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, 
1057 /* 18 */        0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, 
1058 /* 20 */        0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, 
1059 /* 28 */        0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, 
1060 /* 30 */        0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, 
1061 /* 38 */        0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, 
1062 /* 40 */        0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, 
1063 /* 48 */        0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, 
1064 /* 50 */        0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, 
1065 /* 58 */        0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, 
1066 /* 60 */        0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, 
1067 /* 68 */        0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, 
1068 /* 70 */        0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, 
1069 /* 78 */        0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, 
1070 /* 80 */        0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, 
1071 /* 88 */        0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, 
1072 /* 90 */        0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, 
1073 /* 98 */        0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, 
1074 /* a0 */        0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, 
1075 /* a8 */        0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, 
1076 /* b0 */        0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, 
1077 /* b8 */        0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, 
1078 /* c0 */        0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, 
1079 /* c8 */        0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, 
1080 /* d0 */        0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, 
1081 /* d8 */        0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, 
1082 /* e0 */        0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, 
1083 /* e8 */        0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, 
1084 /* f0 */        0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, 
1085 /* f8 */        0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
1086 };
1087
1088 static u_char sinetab[8000] = { 213, 213, 213, 213, 213, 213, 213, 212,
1089 212, 212, 212, 212, 212, 215, 215, 215, 215, 215, 215, 214, 214,
1090 214, 214, 214, 214, 209, 209, 209, 209, 209, 209, 209, 208, 208,
1091 208, 208, 208, 208, 211, 211, 211, 211, 211, 211, 210, 210, 210,
1092 210, 210, 210, 221, 221, 221, 221, 221, 221, 220, 220, 220, 220,
1093 220, 220, 220, 223, 223, 223, 223, 223, 223, 222, 222, 222, 222,
1094 222, 222, 217, 217, 217, 217, 217, 217, 216, 216, 216, 216, 216,
1095 216, 216, 219, 219, 219, 219, 219, 219, 218, 218, 218, 218, 218,
1096 218, 197, 197, 197, 197, 197, 197, 196, 196, 196, 196, 196, 196,
1097 196, 199, 199, 199, 199, 199, 199, 198, 198, 198, 198, 198, 198,
1098 193, 193, 193, 193, 193, 193, 192, 192, 192, 192, 192, 192, 192,
1099 195, 195, 195, 195, 195, 195, 194, 194, 194, 194, 194, 194, 205,
1100 205, 205, 205, 205, 205, 204, 204, 204, 204, 204, 204, 204, 207,
1101 207, 207, 207, 207, 207, 206, 206, 206, 206, 206, 206, 201, 201,
1102 201, 201, 201, 201, 200, 200, 200, 200, 200, 200, 200, 203, 203,
1103 203, 203, 203, 203, 202, 202, 202, 202, 202, 202, 245, 245, 245,
1104 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 244, 244, 244,
1105 244, 244, 244, 244, 244, 244, 244, 244, 244, 247, 247, 247, 247,
1106 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 246, 246, 246,
1107 246, 246, 246, 246, 246, 246, 246, 246, 246, 241, 241, 241, 241,
1108 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 240, 240,
1109 240, 240, 240, 240, 240, 240, 240, 240, 243, 243, 243, 243, 243,
1110 243, 243, 243, 243, 243, 243, 243, 243, 242, 242, 242, 242, 242,
1111 242, 242, 242, 242, 242, 242, 242, 242, 253, 253, 253, 253, 253,
1112 253, 253, 253, 253, 253, 253, 253, 253, 252, 252, 252, 252, 252,
1113 252, 252, 252, 252, 252, 252, 252, 255, 255, 255, 255, 255, 255,
1114 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254,
1115 254, 254, 254, 254, 254, 254, 254, 249, 249, 249, 249, 249, 249,
1116 249, 249, 249, 249, 249, 249, 249, 248, 248, 248, 248, 248, 248,
1117 248, 248, 248, 248, 248, 248, 248, 251, 251, 251, 251, 251, 251,
1118 251, 251, 251, 251, 251, 251, 251, 250, 250, 250, 250, 250, 250,
1119 250, 250, 250, 250, 250, 250, 250, 229, 229, 229, 229, 229, 229,
1120 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1121 229, 229, 229, 229, 229, 229, 229, 228, 228, 228, 228, 228, 228,
1122 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1123 228, 228, 228, 228, 228, 228, 228, 228, 231, 231, 231, 231, 231,
1124 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
1125 231, 231, 231, 231, 231, 231, 231, 231, 231, 230, 230, 230, 230,
1126 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1127 230, 230, 230, 230, 230, 230, 230, 230, 230, 225, 225, 225, 225,
1128 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1129 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 224, 224,
1130 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1131 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 227,
1132 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1133 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1134 227, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1135 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1136 226, 226, 226, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1137 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1138 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, 236,
1139 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1140 236, 236, 236, 236, 236, 236, 236, 236, 239, 239, 239, 239, 239,
1141 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1142 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 238, 238,
1143 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1144 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1145 238, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1146 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1147 233, 233, 233, 233, 233, 232, 232, 232, 232, 232, 232, 232, 232,
1148 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1149 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 235, 235, 235,
1150 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1151 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1152 235, 235, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1153 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1154 234, 234, 234, 234, 234, 234, 234, 149, 149, 149, 149, 149, 149,
1155 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1156 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1157 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1158 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1159 149, 149, 149, 149, 149, 149, 149, 148, 148, 148, 148, 148, 148,
1160 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1161 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1162 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1163 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1164 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 151, 151, 151,
1165 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1166 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1167 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1168 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1169 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1170 151, 151, 151, 151, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1171 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1172 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1173 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1174 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1175 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1176 150, 150, 150, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1177 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1178 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1179 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1180 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1181 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1182 145, 145, 145, 145, 145, 145, 145, 145, 144, 144, 144, 144, 144,
1183 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1184 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1185 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1186 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1187 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1188 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1189 144, 144, 144, 144, 144, 144, 144, 144, 144, 147, 147, 147, 147,
1190 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1191 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1192 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1193 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1194 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1195 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1196 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1197 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 146, 146, 146,
1198 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1199 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1200 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1201 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1202 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1203 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1204 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1205 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1206 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1207 146, 146, 146, 146, 146, 146, 157, 157, 157, 157, 157, 157, 157,
1208 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1209 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1210 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1211 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1212 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1213 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1214 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1215 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1216 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1217 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1218 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1219 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1220 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1221 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1222 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1223 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1224 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1225 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1226 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1227 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1228 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1229 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1230 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1231 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1232 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1233 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1234 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1235 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1236 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1237 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1238 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1239 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1240 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1241 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1242 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1243 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1244 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1245 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1246 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1247 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1248 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1249 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1250 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1251 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1252 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1253 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1254 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1255 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1256 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1257 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1258 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1259 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1260 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1261 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1262 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1263 156, 156, 156, 156, 156, 156, 156, 157, 157, 157, 157, 157, 157,
1264 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1265 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1266 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1267 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1268 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1269 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1270 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1271 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1272 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1273 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1274 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1275 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1276 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1277 157, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1278 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1279 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1280 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1281 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1282 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1283 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1284 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1285 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1286 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, 147,
1287 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1288 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1289 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1290 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1291 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1292 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1293 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1294 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 144, 144,
1295 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1296 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1297 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1298 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1299 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1300 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1301 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 145,
1302 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1303 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1304 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1305 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1306 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1307 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1308 145, 145, 145, 145, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1309 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1310 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1311 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1312 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1313 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1314 150, 150, 150, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1315 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1316 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1317 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1318 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1319 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 148, 148, 148,
1320 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1321 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1322 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1323 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1324 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1325 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1326 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1327 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1328 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1329 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1330 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1331 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1332 234, 234, 234, 234, 234, 235, 235, 235, 235, 235, 235, 235, 235,
1333 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1334 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 232, 232, 232,
1335 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1336 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1337 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1338 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1339 233, 233, 233, 233, 233, 233, 238, 238, 238, 238, 238, 238, 238,
1340 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1341 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 239, 239, 239,
1342 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1343 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 236,
1344 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1345 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1346 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1347 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1348 237, 237, 237, 237, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1349 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1350 226, 226, 226, 226, 226, 226, 227, 227, 227, 227, 227, 227, 227,
1351 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1352 227, 227, 227, 227, 227, 227, 227, 227, 224, 224, 224, 224, 224,
1353 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1354 224, 224, 224, 224, 224, 224, 224, 224, 224, 225, 225, 225, 225,
1355 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1356 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 230, 230,
1357 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1358 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, 231,
1359 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
1360 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 228,
1361 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1362 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1363 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1364 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1365 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
1366 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251,
1367 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
1368 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
1369 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
1370 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1371 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 253,
1372 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 242,
1373 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 243,
1374 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 240,
1375 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241,
1376 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 246, 246,
1377 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 247, 247,
1378 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 244, 244,
1379 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 245, 245, 245,
1380 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 202, 202, 202,
1381 202, 202, 202, 203, 203, 203, 203, 203, 203, 200, 200, 200, 200,
1382 200, 200, 200, 201, 201, 201, 201, 201, 201, 206, 206, 206, 206,
1383 206, 206, 207, 207, 207, 207, 207, 207, 204, 204, 204, 204, 204,
1384 204, 204, 205, 205, 205, 205, 205, 205, 194, 194, 194, 194, 194,
1385 194, 195, 195, 195, 195, 195, 195, 192, 192, 192, 192, 192, 192,
1386 192, 193, 193, 193, 193, 193, 193, 198, 198, 198, 198, 198, 198,
1387 199, 199, 199, 199, 199, 199, 196, 196, 196, 196, 196, 196, 196,
1388 197, 197, 197, 197, 197, 197, 218, 218, 218, 218, 218, 218, 219,
1389 219, 219, 219, 219, 219, 216, 216, 216, 216, 216, 216, 216, 217,
1390 217, 217, 217, 217, 217, 222, 222, 222, 222, 222, 222, 223, 223,
1391 223, 223, 223, 223, 220, 220, 220, 220, 220, 220, 220, 221, 221,
1392 221, 221, 221, 221, 210, 210, 210, 210, 210, 210, 211, 211, 211,
1393 211, 211, 211, 208, 208, 208, 208, 208, 208, 209, 209, 209, 209,
1394 209, 209, 209, 214, 214, 214, 214, 214, 214, 215, 215, 215, 215,
1395 215, 215, 212, 212, 212, 212, 212, 212, 213, 213, 213, 213, 213,
1396 213, 213, 90, 90, 90, 85, 85, 85, 85, 85, 85, 84, 84, 84, 84, 84,
1397 84, 87, 87, 87, 87, 87, 87, 86, 86, 86, 86, 86, 86, 81, 81, 81,
1398 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 83, 83, 83, 83, 83, 83,
1399 82, 82, 82, 82, 82, 82, 93, 93, 93, 93, 93, 93, 93, 92, 92, 92,
1400 92, 92, 92, 95, 95, 95, 95, 95, 95, 94, 94, 94, 94, 94, 94, 89,
1401 89, 89, 89, 89, 89, 88, 88, 88, 88, 88, 88, 88, 91, 91, 91, 91,
1402 91, 91, 90, 90, 90, 90, 90, 90, 69, 69, 69, 69, 69, 69, 68, 68,
1403 68, 68, 68, 68, 68, 71, 71, 71, 71, 71, 71, 70, 70, 70, 70, 70,
1404 70, 65, 65, 65, 65, 65, 65, 64, 64, 64, 64, 64, 64, 64, 67, 67,
1405 67, 67, 67, 67, 66, 66, 66, 66, 66, 66, 77, 77, 77, 77, 77, 77,
1406 76, 76, 76, 76, 76, 76, 76, 79, 79, 79, 79, 79, 79, 78, 78, 78,
1407 78, 78, 78, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72,
1408 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 74, 117, 117, 117, 117,
1409 117, 117, 117, 117, 117, 117, 117, 117, 117, 116, 116, 116, 116,
1410 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119,
1411 119, 119, 119, 119, 119, 119, 119, 119, 118, 118, 118, 118, 118,
1412 118, 118, 118, 118, 118, 118, 118, 118, 113, 113, 113, 113, 113,
1413 113, 113, 113, 113, 113, 113, 113, 113, 112, 112, 112, 112, 112,
1414 112, 112, 112, 112, 112, 112, 112, 115, 115, 115, 115, 115, 115,
1415 115, 115, 115, 115, 115, 115, 115, 114, 114, 114, 114, 114, 114,
1416 114, 114, 114, 114, 114, 114, 114, 125, 125, 125, 125, 125, 125,
1417 125, 125, 125, 125, 125, 125, 125, 124, 124, 124, 124, 124, 124,
1418 124, 124, 124, 124, 124, 124, 124, 127, 127, 127, 127, 127, 127,
1419 127, 127, 127, 127, 127, 127, 126, 126, 126, 126, 126, 126, 126,
1420 126, 126, 126, 126, 126, 126, 121, 121, 121, 121, 121, 121, 121,
1421 121, 121, 121, 121, 121, 121, 120, 120, 120, 120, 120, 120, 120,
1422 120, 120, 120, 120, 120, 120, 123, 123, 123, 123, 123, 123, 123,
1423 123, 123, 123, 123, 123, 123, 122, 122, 122, 122, 122, 122, 122,
1424 122, 122, 122, 122, 122, 122, 101, 101, 101, 101, 101, 101, 101,
1425 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1426 101, 101, 101, 101, 101, 101, 101, 100, 100, 100, 100, 100, 100,
1427 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1428 100, 100, 100, 100, 100, 100, 100, 103, 103, 103, 103, 103, 103,
1429 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1430 103, 103, 103, 103, 103, 103, 103, 103, 102, 102, 102, 102, 102,
1431 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1432 102, 102, 102, 102, 102, 102, 102, 102, 102, 97, 97, 97, 97, 97,
1433 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
1434 97, 97, 97, 97, 97, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1435 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1436 96, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1437 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98,
1438 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1439 98, 98, 98, 98, 98, 98, 98, 98, 98, 109, 109, 109, 109, 109, 109,
1440 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1441 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108,
1442 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1443 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 111,
1444 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1445 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1446 111, 111, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1447 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1448 110, 110, 110, 110, 110, 110, 105, 105, 105, 105, 105, 105, 105,
1449 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1450 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104,
1451 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1452 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1453 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1454 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1455 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106,
1456 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1457 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 21,
1458 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1459 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1460 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1461 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1462 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1463 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1464 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1465 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1466 20, 20, 20, 20, 20, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1467 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1468 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1469 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1470 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 22, 22, 22,
1471 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1472 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1473 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1474 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1475 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 17, 17, 17, 17, 17, 17,
1476 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1477 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1478 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1479 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1480 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16,
1481 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1482 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1483 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1484 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1485 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1486 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 19, 19, 19, 19, 19, 19,
1487 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1488 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1489 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1490 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1491 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1492 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1493 19, 19, 19, 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1494 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1495 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1496 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1497 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1498 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1499 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1500 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1501 18, 18, 18, 18, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1502 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1503 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1504 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1505 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1506 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1507 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1508 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1509 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1510 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1511 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1512 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 28, 28, 28, 28, 28,
1513 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1514 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1515 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1516 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1517 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1518 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1519 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1520 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1521 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1522 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1523 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1524 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1525 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1526 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1527 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1528 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1529 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1530 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1531 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1532 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1533 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1534 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1535 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1536 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1537 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1538 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1539 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1540 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1541 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1542 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1543 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1544 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1545 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1546 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1547 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1548 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1549 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1550 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1551 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1552 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1553 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1554 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1555 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1556 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 18, 18, 18, 18, 18,
1557 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1558 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1559 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1560 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1561 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1562 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1563 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1564 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19,
1565 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1566 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1567 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1568 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1569 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1570 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1571 19, 19, 19, 19, 19, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1572 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1573 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1574 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1575 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1576 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1577 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1578 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1579 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1580 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1581 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1582 17, 17, 17, 17, 17, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1583 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1584 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1585 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1586 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1587 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1588 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1589 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1590 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1591 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 20, 20, 20, 20, 20, 20,
1592 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1593 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1594 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1595 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,
1596 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1597 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1598 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1599 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1600 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1601 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1602 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107,
1603 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1604 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104,
1605 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1606 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1607 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1608 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1609 105, 105, 105, 105, 105, 105, 110, 110, 110, 110, 110, 110, 110,
1610 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1611 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 111, 111,
1612 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1613 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1614 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1615 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1616 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1617 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1618 109, 109, 109, 109, 109, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1619 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1620 98, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1621 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 96, 96,
1622 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1623 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, 97, 97, 97,
1624 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
1625 97, 97, 97, 97, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1626 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1627 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1628 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1629 103, 103, 103, 103, 103, 100, 100, 100, 100, 100, 100, 100, 100,
1630 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1631 100, 100, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 101,
1632 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1633 101, 101, 101, 101, 101, 101, 122, 122, 122, 122, 122, 122, 122,
1634 122, 122, 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123,
1635 123, 123, 123, 123, 123, 123, 120, 120, 120, 120, 120, 120, 120,
1636 120, 120, 120, 120, 120, 120, 121, 121, 121, 121, 121, 121, 121,
1637 121, 121, 121, 121, 121, 121, 126, 126, 126, 126, 126, 126, 126,
1638 126, 126, 126, 126, 126, 126, 127, 127, 127, 127, 127, 127, 127,
1639 127, 127, 127, 127, 127, 124, 124, 124, 124, 124, 124, 124, 124,
1640 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 125, 125,
1641 125, 125, 125, 125, 125, 114, 114, 114, 114, 114, 114, 114, 114,
1642 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, 115, 115, 115,
1643 115, 115, 115, 115, 115, 112, 112, 112, 112, 112, 112, 112, 112,
1644 112, 112, 112, 112, 113, 113, 113, 113, 113, 113, 113, 113, 113,
1645 113, 113, 113, 113, 118, 118, 118, 118, 118, 118, 118, 118, 118,
1646 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119,
1647 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
1648 116, 116, 116, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
1649 117, 117, 117, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 72,
1650 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 78, 78, 78, 78,
1651 78, 78, 79, 79, 79, 79, 79, 79, 76, 76, 76, 76, 76, 76, 76, 77,
1652 77, 77, 77, 77, 77, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67,
1653 67, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 70, 70,
1654 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 68, 68, 68, 68, 68, 68,
1655 68, 69, 69, 69, 69, 69, 69, 90, 90, 90, 90, 90, 90, 91, 91, 91,
1656 91, 91, 91, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89,
1657 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 92, 92, 92, 92,
1658 92, 92, 93, 93, 93, 93, 93, 93, 93, 82, 82, 82, 82, 82, 82, 83,
1659 83, 83, 83, 83, 83, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81,
1660 81, 81, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, 87, 87, 84, 84,
1661 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 90, 90, 90 };
1662
1663 /*===========================================================================*/
1664
1665 #endif /* NI4BTEL > 0 */