The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/netisdn/i4b_tel.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 1997, 2000 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  *      $Id: i4b_tel.c,v 1.18 2006/11/16 01:33:49 christos Exp $
   31  *
   32  * $FreeBSD$
   33  *
   34  *      last edit-date: [Fri Jan  5 11:33:47 2001]
   35  *
   36  *---------------------------------------------------------------------------*/
   37 
   38 #include <sys/cdefs.h>
   39 __KERNEL_RCSID(0, "$NetBSD: i4b_tel.c,v 1.18 2006/11/16 01:33:49 christos Exp $");
   40 
   41 #include "isdntel.h"
   42 
   43 #if NISDNTEL > 0
   44 
   45 #undef I4BTELDEBUG
   46 
   47 #include <sys/param.h>
   48 #include <sys/systm.h>
   49 
   50 #if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(__NetBSD__)
   51 #include <sys/ioccom.h>
   52 #include <sys/poll.h>
   53 #else
   54 #include <sys/ioctl.h>
   55 #include <sys/fcntl.h>
   56 #endif
   57 
   58 #include <sys/conf.h>
   59 #include <sys/uio.h>
   60 #include <sys/kernel.h>
   61 #include <sys/mbuf.h>
   62 #include <sys/socket.h>
   63 #include <net/if.h>
   64 #include <sys/proc.h>
   65 #include <sys/tty.h>
   66 
   67 #ifdef __FreeBSD__
   68 
   69 #if defined(__FreeBSD__) && __FreeBSD__ == 3
   70 #include "opt_devfs.h"
   71 #endif
   72 
   73 #ifdef DEVFS
   74 #include <sys/devfsext.h>
   75 #endif
   76 
   77 #endif /* __FreeBSD__ */
   78 
   79 #ifdef __bsdi__
   80 #include <sys/device.h>
   81 #endif
   82 
   83 #ifdef __FreeBSD__
   84 #include <machine/i4b_ioctl.h>
   85 #include <machine/i4b_tel_ioctl.h>
   86 #include <machine/i4b_debug.h>
   87 #else
   88 #include <netisdn/i4b_ioctl.h>
   89 #include <netisdn/i4b_tel_ioctl.h>
   90 #include <netisdn/i4b_debug.h>
   91 #endif
   92 
   93 #include <netisdn/i4b_global.h>
   94 #include <netisdn/i4b_mbuf.h>
   95 #include <netisdn/i4b_l3l4.h>
   96 
   97 #include <netisdn/i4b_l4.h>
   98 
   99 /* minor number: lower 6 bits = unit number */
  100 
  101 #include <netisdn/i4b_l4.h>
  102 
  103 #define UNITBITS        6
  104 #define UNITMASK        0x3f
  105 #define UNIT(n)         (minor(n) & UNITMASK)
  106 
  107 /* minor number: upper 2 bits = function number */
  108 
  109 #define FUNCMASK        0x03
  110 #define FUNC(n)         (((minor(n)) >> UNITBITS) & FUNCMASK)
  111 
  112 #define FUNCTEL         0       /* 0 = normal i4btel device     */
  113 #define FUNCDIAL        1       /* 1 = i4bteld dialout device   */
  114 
  115 #define NOFUNCS         2       /* number of device classes     */
  116 
  117 typedef struct tel_softc {
  118 
  119         /* used only in func = FUNCTEL */
  120 
  121         isdn_link_t             *isdn_linktab;  /* isdn linktab */
  122         int                     audiofmt;       /* audio format conversion */
  123         u_char                  *rcvttab;       /* conversion table on read */
  124         u_char                  *wcvttab;       /* conversion table on write */
  125         call_desc_t             *cdp;           /* call descriptor pointer */
  126 
  127         /* link from FUNCTEL to FUNCDIAL */
  128         struct tel_softc * dialer;
  129 
  130         /* used only in func = FUNCDIAL */
  131 
  132         char                    result;         /* result code for dial dev */
  133 
  134         /* used in func = FUNCDIAL and func = FUNCTEL*/
  135 
  136         int                     devstate;       /* state of this unit   */
  137 #define ST_IDLE         0x00            /* idle */
  138 #define ST_CONNECTED    0x01            /* isdn connected state */
  139 #define ST_ISOPEN       0x02            /* userland opened */
  140 #define ST_RDWAITDATA   0x04            /* userland read waiting */
  141 #define ST_WRWAITEMPTY  0x08            /* userland write waiting */
  142 #define ST_TONE         0x10            /* tone generator */
  143 
  144         struct selinfo          selp;           /* select / poll */
  145 
  146 #if defined(__FreeBSD__) && __FreeBSD__ == 3
  147 #ifdef DEVFS
  148         void                    *devfs_token;   /* token for DEVFS */
  149 #endif
  150 #endif
  151         struct i4b_tel_tones    tones;
  152         int                     toneidx;
  153         int                     toneomega;
  154         int                     tonefreq;
  155 
  156 } tel_sc_t;
  157 
  158 static tel_sc_t tel_sc[NISDNTEL][NOFUNCS];
  159 
  160 /* forward decl */
  161 
  162 static void tel_rx_data_rdy(void *softc);
  163 static void tel_tx_queue_empty(void *softc);
  164 static void tel_connect(void *softc, void *cdp);
  165 static void tel_disconnect(void *softc, void *cdp);
  166 static void tel_tone(tel_sc_t *sc);
  167 static void tel_activity(void *softc, int rxtx);
  168 static void tel_updown(void *softc, int updown);
  169 static void tel_dialresponse(void *softc, int status, cause_t cause);
  170 static void* tel_get_softc(int unit);
  171 static void tel_set_linktab(void *softc, isdn_link_t *ilt);
  172 
  173 /* audio format conversion tables */
  174 static unsigned char a2u_tab[];
  175 static unsigned char u2a_tab[];
  176 static unsigned char bitreverse[];
  177 static u_char sinetab[];
  178 
  179 #ifndef __FreeBSD__
  180 #define PDEVSTATIC      /* - not static - */
  181 PDEVSTATIC void isdntelattach __P((void));
  182 PDEVSTATIC int isdntelioctl __P((dev_t dev, u_long cmd, caddr_t data, int flag, struct lwp *l));
  183 
  184 int isdntelopen __P((dev_t dev, int flag, int fmt, struct lwp *l));
  185 int isdntelclose __P((dev_t dev, int flag, int fmt, struct lwp *l));
  186 int isdntelread __P((dev_t dev, struct uio *uio, int ioflag));
  187 int isdntelwrite __P((dev_t dev, struct uio * uio, int ioflag));
  188 
  189 #ifdef OS_USES_POLL
  190 int isdntelpoll __P((dev_t dev, int events, struct lwp *l));
  191 int isdntelkqfilter __P((dev_t dev, struct knote *kn));
  192 #else
  193 int isdntelsel __P((dev_t dev, int rw, struct lwp *l));
  194 #endif
  195 
  196 #endif /* __FreeBSD__ */
  197 
  198 #ifdef __NetBSD__
  199 const struct cdevsw isdntel_cdevsw = {
  200         isdntelopen, isdntelclose, isdntelread, isdntelwrite, isdntelioctl,
  201         nostop, notty, isdntelpoll, nommap, isdntelkqfilter, D_OTHER
  202 };
  203 #endif /* __NetBSD__ */
  204 
  205 #if BSD > 199306 && defined(__FreeBSD__)
  206 
  207 #define PDEVSTATIC      static
  208 PDEVSTATIC d_open_t     i4btelopen;
  209 PDEVSTATIC d_close_t i4btelclose;
  210 PDEVSTATIC d_read_t i4btelread;
  211 PDEVSTATIC d_read_t i4btelwrite;
  212 PDEVSTATIC d_ioctl_t i4btelioctl;
  213 
  214 #ifdef OS_USES_POLL
  215 PDEVSTATIC d_poll_t i4btelpoll;
  216 #define POLLFIELD i4btelpoll
  217 #else
  218 PDEVSTATIC d_select_t i4btelsel;
  219 #define POLLFIELD i4btelsel
  220 #endif
  221 
  222 #define CDEV_MAJOR 56
  223 
  224 #if defined(__FreeBSD__) && __FreeBSD__ >= 4
  225 static struct cdevsw i4btel_cdevsw = {
  226         /* open */      i4btelopen,
  227         /* close */     i4btelclose,
  228         /* read */      i4btelread,
  229         /* write */     i4btelwrite,
  230         /* ioctl */     i4btelioctl,
  231         /* poll */      POLLFIELD,
  232         /* mmap */      nommap,
  233         /* strategy */  nostrategy,
  234         /* name */      "i4btel",
  235         /* maj */       CDEV_MAJOR,
  236         /* dump */      nodump,
  237         /* psize */     nopsize,
  238         /* flags */     0,
  239         /* bmaj */      -1
  240 };
  241 #else
  242 static struct cdevsw i4btel_cdevsw = {
  243         i4btelopen,     i4btelclose,    i4btelread,     i4btelwrite,
  244         i4btelioctl,    nostop,         noreset,        nodevtotty,
  245         POLLFIELD,      nommap,         NULL, "i4btel", NULL, -1
  246 };
  247 #endif
  248 
  249 PDEVSTATIC void isdntelinit(void *unused);
  250 PDEVSTATIC void isdntelattach(void *);
  251 
  252 PSEUDO_SET(isdntelattach, i4b_tel);
  253 
  254 /*===========================================================================*
  255  *                      DEVICE DRIVER ROUTINES
  256  *===========================================================================*/
  257 
  258 /*---------------------------------------------------------------------------*
  259  *      initialization at kernel load time
  260  *---------------------------------------------------------------------------*/
  261 PDEVSTATIC void
  262 isdntelinit(void *unused)
  263 {
  264 #if defined(__FreeBSD__) && __FreeBSD__ >= 4
  265         cdevsw_add(&i4btel_cdevsw);
  266 #else
  267         dev_t dev = makedev(CDEV_MAJOR, 0);
  268         cdevsw_add(&dev, &i4btel_cdevsw, NULL);
  269 #endif
  270 }
  271 
  272 SYSINIT(i4bteldev, SI_SUB_DRIVERS,
  273         SI_ORDER_MIDDLE+CDEV_MAJOR, &i4btelinit, NULL);
  274 
  275 #endif /* BSD > 199306 && defined(__FreeBSD__) */
  276 
  277 #ifdef __bsdi__
  278 
  279 int i4btelsel(dev_t dev, int rw, struct lwp *l);
  280 int i4btelmatch(struct device *parent, struct cfdata *cf, void *aux);
  281 void dummy_i4btelattach(struct device*, struct device *, void *);
  282 
  283 #define CDEV_MAJOR 62
  284 
  285 static struct cfdriver i4btelcd =
  286         { NULL, "i4btel", i4btelmatch, dummy_i4btelattach, DV_DULL,
  287           sizeof(struct cfdriver) };
  288 struct devsw i4btelsw =
  289         { &i4btelcd,
  290           i4btelopen,   i4btelclose,    i4btelread,     i4btelwrite,
  291           i4btelioctl,  i4btelsel,      nommap,         nostrat,
  292           nodump,       nopsize,        0,              nostop
  293 };
  294 
  295 int
  296 i4btelmatch(struct device *parent, struct cfdata *cf, void *aux)
  297 {
  298         NDBGL4(L4_TELDBG, "aux=0x%x", aux);
  299         return 1;
  300 }
  301 
  302 void
  303 dummy_i4btelattach(struct device *parent, struct device *self, void *aux)
  304 {
  305         NDBGL4(L4_TELDBG, "aux=0x%x", aux);
  306 }
  307 
  308 #endif /* __bsdi__ */
  309 
  310 static const struct isdn_l4_driver_functions
  311 tel_driver = {
  312         tel_rx_data_rdy,
  313         tel_tx_queue_empty,
  314         tel_activity,
  315         tel_connect,
  316         tel_disconnect,
  317         tel_dialresponse,
  318         tel_updown,
  319         tel_get_softc,
  320         tel_set_linktab,
  321         NULL
  322 };
  323 
  324 static int isdntel_driver_id = -1;
  325 
  326 /*---------------------------------------------------------------------------*
  327  *      interface attach routine
  328  *---------------------------------------------------------------------------*/
  329 PDEVSTATIC void
  330 #ifdef __FreeBSD__
  331 isdntelattach(void *dummy)
  332 #else
  333 isdntelattach()
  334 #endif
  335 {
  336         int i, j;
  337 
  338         isdntel_driver_id = isdn_l4_driver_attach("isdntel", NISDNTEL, &tel_driver);
  339 
  340         for(i=0; i < NISDNTEL; i++)
  341         {
  342                 for(j=0; j < NOFUNCS; j++)
  343                 {
  344                         tel_sc[i][j].devstate = ST_IDLE;
  345                         tel_sc[i][j].audiofmt = CVT_NONE;
  346                         tel_sc[i][j].rcvttab = 0;
  347                         tel_sc[i][j].wcvttab = 0;
  348                         tel_sc[i][j].result = 0;
  349 
  350                         if (j == FUNCTEL)
  351                                 tel_sc[i][FUNCTEL].dialer = &tel_sc[i][FUNCDIAL];
  352                         else
  353                                 tel_sc[i][j].dialer = NULL;
  354 
  355 #if defined(__FreeBSD__)
  356 #if __FreeBSD__ == 3
  357 
  358 #ifdef DEVFS
  359 
  360 /* XXX */               tel_sc[i][j].devfs_token
  361                                 = devfs_add_devswf(&i4btel_cdevsw, i, DV_CHR,
  362                                      UID_ROOT, GID_WHEEL, 0600,
  363                                      "i4btel%d", i);
  364 #endif
  365 
  366 #else
  367                         switch(j)
  368                         {
  369                                 case FUNCTEL:   /* normal i4btel device */
  370                                         make_dev(&i4btel_cdevsw, i,
  371                                                 UID_ROOT, GID_WHEEL,
  372                                                 0600, "i4btel%d", i);
  373                                         break;
  374 
  375                                 case FUNCDIAL:  /* i4bteld dialout device */
  376                                         make_dev(&i4btel_cdevsw, i+(1<<UNITBITS),
  377                                                 UID_ROOT, GID_WHEEL,
  378                                                 0600, "i4bteld%d", i);
  379                                         break;
  380                         }
  381 #endif
  382 #endif
  383                 }
  384         }
  385 }
  386 
  387 /*---------------------------------------------------------------------------*
  388  *      open tel device
  389  *---------------------------------------------------------------------------*/
  390 PDEVSTATIC int
  391 isdntelopen(dev_t dev, int flag, int fmt,
  392         struct lwp *l)
  393 {
  394         int unit = UNIT(dev);
  395         int func = FUNC(dev);
  396 
  397         tel_sc_t *sc;
  398 
  399         if(unit >= NISDNTEL)
  400                 return(ENXIO);
  401 
  402         sc = &tel_sc[unit][func];
  403 
  404         if(sc->devstate & ST_ISOPEN)
  405                 return(EBUSY);
  406 
  407         sc->devstate |= ST_ISOPEN;
  408 
  409         if(func == FUNCDIAL)
  410         {
  411                 sc->result = 0;
  412         }
  413 
  414         return(0);
  415 }
  416 
  417 /*---------------------------------------------------------------------------*
  418  *      close tel device
  419  *---------------------------------------------------------------------------*/
  420 PDEVSTATIC int
  421 isdntelclose(dev_t dev, int flag, int fmt,
  422         struct lwp *l)
  423 {
  424         int unit = UNIT(dev);
  425         int func = FUNC(dev);
  426         tel_sc_t *sc;
  427         int error = 0;
  428         int x;
  429 
  430         if(unit > NISDNTEL)
  431                 return(ENXIO);
  432 
  433         sc = &tel_sc[unit][func];
  434 
  435         x = splnet();
  436         sc->devstate &= ~ST_TONE;
  437         if((func == FUNCTEL) &&
  438            (sc->isdn_linktab != NULL && sc->isdn_linktab->tx_queue != NULL))
  439         {
  440                 while(!(IF_QEMPTY(sc->isdn_linktab->tx_queue)))
  441                 {
  442                         sc->devstate |= ST_WRWAITEMPTY;
  443 
  444                         if((error = tsleep((caddr_t) &sc->isdn_linktab->tx_queue,
  445                                         TTIPRI | PCATCH, "wtcl", 0)) != 0)
  446                         {
  447                                 break;
  448                         }
  449                 }
  450                 sc->devstate &= ~ST_WRWAITEMPTY;
  451         }
  452 
  453         sc->devstate &= ~ST_ISOPEN;
  454         splx(x);
  455         wakeup((caddr_t) &sc->tones);
  456 
  457         return(error);
  458 }
  459 
  460 /*---------------------------------------------------------------------------*
  461  *      i4btelioctl - device driver ioctl routine
  462  *---------------------------------------------------------------------------*/
  463 PDEVSTATIC int
  464 isdntelioctl(dev_t dev, u_long cmd, caddr_t data, int flag,
  465         struct lwp *l)
  466 {
  467         int unit = UNIT(dev);
  468         int func = FUNC(dev);
  469         int error = 0;
  470         struct mbuf *m;
  471         int s;
  472 
  473         tel_sc_t *sc = &tel_sc[unit][func];
  474 
  475         if(func == FUNCTEL)
  476         {
  477                 switch(cmd)
  478                 {
  479                         case I4B_TEL_GETAUDIOFMT:
  480                                 *(int *)data = sc->audiofmt;
  481                                 break;
  482 
  483                         case I4B_TEL_SETAUDIOFMT:
  484                                 switch (*(int *)data)
  485                                 {
  486                                         case CVT_NONE:
  487                                                 sc->rcvttab = 0;
  488                                                 sc->wcvttab = 0;
  489                                                 break;
  490                                         case CVT_ALAW2ULAW:
  491                                                 /* ISDN: A-law */
  492                                                 /* user: mu-law */
  493                                                 sc->rcvttab = a2u_tab;
  494                                                 sc->wcvttab = u2a_tab;
  495                                                 break;
  496                                         case CVT_ULAW2ALAW:
  497                                                 /* ISDN: mu-law */
  498                                                 /* user: A-law */
  499                                                 sc->rcvttab = u2a_tab;
  500                                                 sc->wcvttab = a2u_tab;
  501                                                 break;
  502                                         default:
  503                                                 error = ENODEV;
  504                                                 break;
  505                                 }
  506                                 if(error == 0)
  507                                         sc->audiofmt = *(int *)data;
  508                                 break;
  509 
  510                         case I4B_TEL_EMPTYINPUTQUEUE:
  511                                 s = splnet();
  512                                 while((sc->devstate & ST_CONNECTED)     &&
  513                                         (sc->devstate & ST_ISOPEN)      &&
  514                                         !IF_QEMPTY(sc->isdn_linktab->rx_queue))
  515                                 {
  516                                         IF_DEQUEUE(sc->isdn_linktab->rx_queue, m);
  517                                         if(m)
  518                                                 i4b_Bfreembuf(m);
  519                                 }
  520                                 splx(s);
  521                                 break;
  522 
  523                         case I4B_TEL_VR_REQ:
  524                         {
  525                                 msg_vr_req_t *mvr;
  526 
  527                                 mvr = (msg_vr_req_t *)data;
  528 
  529                                 mvr->version = VERSION;
  530                                 mvr->release = REL;
  531                                 mvr->step = STEP;
  532                                 break;
  533                         }
  534                         case I4B_TEL_TONES:
  535                         {
  536                                 struct i4b_tel_tones *tt;
  537 
  538                                 tt = (struct i4b_tel_tones *)data;
  539                                 s = splnet();
  540                                 while ((sc->devstate & ST_TONE) &&
  541                                     sc->tones.duration[sc->toneidx] != 0) {
  542                                         if((error = tsleep((caddr_t) &sc->tones,
  543                                             TTIPRI | PCATCH, "rtone", 0 )) != 0) {
  544                                                 splx(s);
  545                                                 return(error);
  546                                         }
  547                                 }
  548                                 if(!(sc->devstate & ST_ISOPEN)) {
  549                                         splx(s);
  550                                         return (EIO);
  551                                 }
  552                                 if(!(sc->devstate & ST_CONNECTED)) {
  553                                         splx(s);
  554                                         return (EIO);
  555                                 }
  556 
  557                                 sc->tones = *tt;
  558                                 sc->toneidx = 0;
  559                                 sc->tonefreq = tt->frequency[0];
  560                                 sc->devstate |= ST_TONE;
  561                                 splx(s);
  562                                 tel_tone(sc);
  563                                 break;
  564                         }
  565 
  566                         default:
  567                                 error = ENOTTY;
  568                                 break;
  569                 }
  570         }
  571         else if(func == FUNCDIAL)
  572         {
  573                 switch(cmd)
  574                 {
  575                         default:
  576                                 error = ENOTTY;
  577                                 break;
  578                 }
  579         }
  580         return(error);
  581 }
  582 
  583 /*---------------------------------------------------------------------------*
  584  *      read from tel device
  585  *---------------------------------------------------------------------------*/
  586 PDEVSTATIC int
  587 isdntelread(dev_t dev, struct uio *uio, int ioflag)
  588 {
  589         int unit = UNIT(dev);
  590         int func = FUNC(dev);
  591 
  592         struct mbuf *m;
  593         int s;
  594         int error = 0;
  595 
  596         tel_sc_t *sc = &tel_sc[unit][func];
  597 
  598         if(!(sc->devstate & ST_ISOPEN))
  599                 return(EIO);
  600 
  601         if(func == FUNCTEL)
  602         {
  603                 s = splnet();
  604                 while((sc->devstate & ST_ISOPEN)          &&
  605                       (sc->devstate & ST_CONNECTED) &&
  606                       IF_QEMPTY(sc->isdn_linktab->rx_queue))
  607                 {
  608                         sc->devstate |= ST_RDWAITDATA;
  609 
  610                         NDBGL4(L4_TELDBG, "i4btel%d, queue empty!", unit);
  611 
  612                         if((error = tsleep((caddr_t) &sc->isdn_linktab->rx_queue,
  613                                                 TTIPRI | PCATCH,
  614                                                 "rtel", 0 )) != 0)
  615                         {
  616                                 sc->devstate &= ~ST_RDWAITDATA;
  617                                 splx(s);
  618                                 return(error);
  619                         }
  620                 }
  621 
  622                 if(!(sc->devstate & ST_ISOPEN))
  623                 {
  624                         splx(s);
  625                         return(EIO);
  626                 }
  627 
  628                 if(!(sc->devstate & ST_CONNECTED))
  629                 {
  630                         splx(s);
  631                         return(EIO);
  632                 }
  633 
  634 
  635                 IF_DEQUEUE(sc->isdn_linktab->rx_queue, m);
  636 
  637                 if(m && m->m_len > 0)
  638                 {
  639                         register int i;
  640 
  641                         for(i = 0; i < m->m_len; i++)
  642                         {
  643                                 /* always reverse bit order from line */
  644                                 mtod(m,u_char *)[i] = bitreverse[mtod(m,u_char *)[i]];
  645 
  646                                 /* convert if necessary */
  647                                 if(sc->rcvttab)
  648                                         mtod(m,u_char *)[i] = sc->rcvttab[mtod(m,u_char *)[i]];
  649                         }
  650                         error = uiomove(m->m_data, m->m_len, uio);
  651 
  652                         NDBGL4(L4_TELDBG, "i4btel%d, mbuf (%d bytes), uiomove %d!", unit, m->m_len, error);
  653                 }
  654                 else
  655                 {
  656                         NDBGL4(L4_TELDBG, "i4btel%d, empty mbuf from queue!", unit);
  657                         error = EIO;
  658                 }
  659 
  660                 if(m)
  661                         i4b_Bfreembuf(m);
  662 
  663                 splx(s);
  664         }
  665         else if(func == FUNCDIAL)
  666         {
  667                 s = splnet();
  668                 while((sc->result == 0) && (sc->devstate & ST_ISOPEN))
  669                 {
  670                         sc->devstate |= ST_RDWAITDATA;
  671 
  672                         if((error = tsleep((caddr_t) &sc->result,
  673                                                 TTIPRI | PCATCH,
  674                                                 "rtel1", 0 )) != 0)
  675                         {
  676                                 sc->devstate &= ~ST_RDWAITDATA;
  677                                 splx(s);
  678                                 return(error);
  679                         }
  680                 }
  681 
  682                 if(!(sc->devstate & ST_ISOPEN))
  683                 {
  684                         splx(s);
  685                         return(EIO);
  686                 }
  687 
  688                 if(sc->result != 0)
  689                 {
  690                         error = uiomove(&sc->result, 1, uio);
  691                         sc->result = 0;
  692                 }
  693                 else
  694                 {
  695                         error = EIO;
  696                 }
  697 
  698                 splx(s);
  699         }
  700         return(error);
  701 }
  702 
  703 /*---------------------------------------------------------------------------*
  704  *      write to tel device
  705  *---------------------------------------------------------------------------*/
  706 PDEVSTATIC int
  707 isdntelwrite(dev_t dev, struct uio * uio, int ioflag)
  708 {
  709         int unit = UNIT(dev);
  710         int func = FUNC(dev);
  711         struct mbuf *m;
  712         int s;
  713         int error = 0;
  714         tel_sc_t *sc = &tel_sc[unit][func];
  715 
  716         if(!(sc->devstate & ST_ISOPEN))
  717         {
  718                 return(EIO);
  719         }
  720 
  721         if(func == FUNCTEL)
  722         {
  723                 s = splnet();
  724 
  725                 if(!(sc->devstate & ST_CONNECTED)) {
  726                         splx(s);
  727                         return(EIO);
  728                 }
  729 
  730                 sc->devstate &= ~ST_TONE;
  731                 while((IF_QFULL(sc->isdn_linktab->tx_queue)) &&
  732                       (sc->devstate & ST_ISOPEN))
  733                 {
  734                         sc->devstate |= ST_WRWAITEMPTY;
  735 
  736                         if((error = tsleep((caddr_t) &sc->isdn_linktab->tx_queue,
  737                                         TTIPRI | PCATCH, "wtel", 0)) != 0)
  738                         {
  739                                 sc->devstate &= ~ST_WRWAITEMPTY;
  740                                 splx(s);
  741                                 return(error);
  742                         }
  743                 }
  744 
  745                 if(!(sc->devstate & ST_ISOPEN))
  746                 {
  747                         splx(s);
  748                         return(EIO);
  749                 }
  750 
  751                 if(!(sc->devstate & ST_CONNECTED))
  752                 {
  753                         splx(s);
  754                         return(EIO);
  755                 }
  756 
  757                 if((m = i4b_Bgetmbuf(BCH_MAX_DATALEN)) != NULL)
  758                 {
  759                         register int i;
  760 
  761                         m->m_len = min(BCH_MAX_DATALEN, uio->uio_resid);
  762 
  763                         error = uiomove(m->m_data, m->m_len, uio);
  764 
  765                         for(i = 0; i < m->m_len; i++)
  766                         {
  767                                 /* convert if necessary */
  768                                 if(sc->wcvttab)
  769                                         mtod(m,u_char *)[i] = sc->wcvttab[mtod(m,u_char *)[i]];
  770 
  771                                 /* always reverse bitorder to line */
  772                                 mtod(m,u_char *)[i] = bitreverse[mtod(m,u_char *)[i]];
  773                         }
  774 
  775                         if(IF_QFULL(sc->isdn_linktab->tx_queue))
  776                         {
  777                                 m_freem(m);
  778                         }
  779                         else
  780                         {
  781                                 IF_ENQUEUE(sc->isdn_linktab->tx_queue, m);
  782                         }
  783 
  784                         (*sc->isdn_linktab->bchannel_driver->bch_tx_start)(sc->isdn_linktab->l1token, sc->isdn_linktab->channel);
  785                 }
  786 
  787                 splx(s);
  788         }
  789         else if(func == FUNCDIAL)
  790         {
  791                 tel_sc_t *telsc = &tel_sc[unit][FUNCTEL];
  792 
  793 #define CMDBUFSIZ 80
  794                 char cmdbuf[CMDBUFSIZ];
  795                 int len = min(CMDBUFSIZ-1, uio->uio_resid);
  796 
  797                 error = uiomove(cmdbuf, len, uio);
  798 
  799                 if(cmdbuf[0] == CMD_DIAL)
  800                 {
  801                         i4b_l4_dialoutnumber(isdntel_driver_id, unit, len-1, &cmdbuf[1]);
  802                 }
  803                 else if(cmdbuf[0] == CMD_HUP)
  804                 {
  805                         if (!(telsc->devstate & ST_CONNECTED))
  806                                 error = EIO;
  807                         else
  808                                 i4b_l4_drvrdisc(telsc->cdp->cdid);
  809                 }
  810         }
  811         else
  812         {
  813                 error = EIO;
  814         }
  815 
  816         return(error);
  817 }
  818 
  819 /*---------------------------------------------------------------------------*
  820  *
  821  *---------------------------------------------------------------------------*/
  822 #define NTONESAMP 32
  823 static void
  824 tel_tone(tel_sc_t *sc)
  825 {
  826         struct mbuf *m;
  827         u_char *p;
  828         int i;
  829 
  830         if((m = i4b_Bgetmbuf(NTONESAMP)) == NULL) {
  831                 printf("no mbuf in tel_tone\n");
  832                 return;
  833         }
  834         p = m->m_data;
  835         m->m_len = 0;
  836         for (i = 0; i < NTONESAMP && (sc->devstate & ST_TONE); i++) {
  837 
  838                 if (sc->tones.duration[sc->toneidx] > 0) {
  839                         if (--sc->tones.duration[sc->toneidx] == 0) {
  840                                 sc->toneidx++;
  841                                 if (sc->toneidx == I4B_TEL_MAXTONES) {
  842                                         sc->devstate &= ~ST_TONE;
  843                                         sc->toneomega = 0;
  844                                         sc->tonefreq = 0;
  845                                 } else if (sc->tones.frequency[sc->toneidx] == 0 &&
  846                                            sc->tones.duration[sc->toneidx] == 0) {
  847                                         sc->devstate &= ~ST_TONE;
  848                                         sc->toneomega = 0;
  849                                         sc->tonefreq = 0;
  850                                 } else {
  851                                         sc->tonefreq = sc->tones.frequency[sc->toneidx];
  852                                 }
  853                                 if (sc->tones.duration[sc->toneidx] == 0) {
  854                                         wakeup((caddr_t) &sc->tones);
  855                                 }
  856                         }
  857                 }
  858 
  859                 sc->toneomega += sc->tonefreq;
  860                 if (sc->toneomega >= 8000)
  861                         sc->toneomega -= 8000;
  862                 *p++ = bitreverse[sinetab[sc->toneomega]];
  863                 m->m_len++;
  864         }
  865         IF_ENQUEUE(sc->isdn_linktab->tx_queue, m);
  866         (*sc->isdn_linktab->bchannel_driver->bch_tx_start)(sc->isdn_linktab->l1token, sc->isdn_linktab->channel);
  867 }
  868 
  869 
  870 #ifdef OS_USES_POLL
  871 /*---------------------------------------------------------------------------*
  872  *      device driver poll
  873  *---------------------------------------------------------------------------*/
  874 PDEVSTATIC int
  875 isdntelpoll(dev_t dev, int events, struct lwp *l)
  876 {
  877         int revents = 0;        /* Events we found */
  878         int s;
  879         int unit = UNIT(dev);
  880         int func = FUNC(dev);
  881 
  882         tel_sc_t *sc = &tel_sc[unit][func];
  883 
  884         s = splhigh();
  885 
  886         if(!(sc->devstate & ST_ISOPEN))
  887         {
  888                 NDBGL4(L4_TELDBG, "i4btel%d, !ST_ISOPEN", unit);
  889                 splx(s);
  890                 return(0);
  891         }
  892 
  893         if(func == FUNCTEL)
  894         {
  895                 /*
  896                  * Writes are OK if we are connected and the
  897                  * transmit queue can take them
  898                  */
  899 
  900                 if((events & (POLLOUT|POLLWRNORM))      &&
  901                         (sc->devstate & ST_CONNECTED)   &&
  902                         (sc->isdn_linktab != NULL)      &&
  903                         (!IF_QFULL(sc->isdn_linktab->tx_queue)))
  904                 {
  905                         NDBGL4(L4_TELDBG, "i4btel%d, POLLOUT", unit);
  906                         revents |= (events & (POLLOUT|POLLWRNORM));
  907                 }
  908 
  909                 /* ... while reads are OK if we have any data */
  910 
  911                 if((events & (POLLIN|POLLRDNORM))       &&
  912                         (sc->devstate & ST_CONNECTED)   &&
  913                         (sc->isdn_linktab != NULL)      &&
  914                         (!IF_QEMPTY(sc->isdn_linktab->rx_queue)))
  915                 {
  916                         NDBGL4(L4_TELDBG, "i4btel%d, POLLIN", unit);
  917                         revents |= (events & (POLLIN|POLLRDNORM));
  918                 }
  919 
  920                 if(revents == 0)
  921                 {
  922                         NDBGL4(L4_TELDBG, "i4btel%d, selrecord", unit);
  923                         selrecord(l, &sc->selp);
  924                 }
  925         }
  926         else if(func == FUNCDIAL)
  927         {
  928                 if(events & (POLLOUT|POLLWRNORM))
  929                 {
  930                         NDBGL4(L4_TELDBG, "i4bteld%d,  POLLOUT", unit);
  931                         revents |= (events & (POLLOUT|POLLWRNORM));
  932                 }
  933 
  934                 if(events & (POLLIN|POLLRDNORM))
  935                 {
  936                         NDBGL4(L4_TELDBG, "i4bteld%d,  POLLIN, result = %d", unit, sc->result);
  937                         if(sc->result != 0)
  938                                 revents |= (events & (POLLIN|POLLRDNORM));
  939                 }
  940 
  941                 if(revents == 0)
  942                 {
  943                         NDBGL4(L4_TELDBG, "i4bteld%d,  selrecord", unit);
  944                         selrecord(l, &sc->selp);
  945                 }
  946         }
  947         splx(s);
  948         return(revents);
  949 }
  950 
  951 static void
  952 filt_i4btel_detach(struct knote *kn)
  953 {
  954         tel_sc_t *sc = kn->kn_hook;
  955         int s;
  956 
  957         s = splhigh();
  958         SLIST_REMOVE(&sc->selp.sel_klist, kn, knote, kn_selnext);
  959         splx(s);
  960 }
  961 
  962 static int
  963 filt_i4btel_telread(struct knote *kn, long hint)
  964 {
  965         tel_sc_t *sc = kn->kn_hook;
  966 
  967         if ((sc->devstate & ST_CONNECTED) == 0)
  968                 return (0);
  969         if (sc->isdn_linktab == NULL)
  970                 return (0);
  971         if (IF_QEMPTY(sc->isdn_linktab->rx_queue))
  972                 return (0);
  973 
  974         kn->kn_data = 0;        /* XXXLUKEM (thorpej): what to put here? */
  975         return (1);
  976 }
  977 
  978 static const struct filterops i4btel_telread_filtops =
  979         { 1, NULL, filt_i4btel_detach, filt_i4btel_telread };
  980 
  981 static int
  982 filt_i4btel_telwrite(struct knote *kn, long hint)
  983 {
  984         tel_sc_t *sc = kn->kn_hook;
  985 
  986         if ((sc->devstate & ST_CONNECTED) == 0)
  987                 return (0);
  988         if (sc->isdn_linktab == NULL)
  989                 return (0);
  990         if (IF_QFULL(sc->isdn_linktab->tx_queue))
  991                 return (0);
  992 
  993         kn->kn_data = 0;        /* XXXLUKEM (thorpej): what to put here? */
  994         return (1);
  995 }
  996 
  997 static const struct filterops i4btel_telwrite_filtops =
  998         { 1, NULL, filt_i4btel_detach, filt_i4btel_telwrite };
  999 
 1000 static int
 1001 filt_i4btel_dialread(struct knote *kn, long hint)
 1002 {
 1003         tel_sc_t *sc = kn->kn_hook;
 1004 
 1005         if (sc->result == 0)
 1006                 return (0);
 1007 
 1008         kn->kn_data = 0;        /* XXXLUKEM (thorpej): what to put here? */
 1009         return (1);
 1010 }
 1011 
 1012 static const struct filterops i4btel_dialread_filtops =
 1013         { 1, NULL, filt_i4btel_detach, filt_i4btel_dialread };
 1014 
 1015 static const struct filterops i4btel_seltrue_filtops =
 1016         { 1, NULL, filt_i4btel_detach, filt_seltrue };
 1017 
 1018 int
 1019 isdntelkqfilter(dev_t dev, struct knote *kn)
 1020 {
 1021         int s;
 1022         int unit = UNIT(dev);
 1023         int func = FUNC(dev);
 1024 
 1025         struct klist *klist;
 1026         tel_sc_t *sc = &tel_sc[unit][func];
 1027 
 1028         switch (kn->kn_filter) {
 1029         case EVFILT_READ:
 1030                 klist = &sc->selp.sel_klist;
 1031                 if (func == FUNCTEL)
 1032                         kn->kn_fop = &i4btel_telread_filtops;
 1033                 else if (func == FUNCDIAL)
 1034                         kn->kn_fop = &i4btel_dialread_filtops;
 1035                 else
 1036                         return (1);
 1037                 break;
 1038 
 1039         case EVFILT_WRITE:
 1040                 klist = &sc->selp.sel_klist;
 1041                 if (func == FUNCTEL)
 1042                         kn->kn_fop = &i4btel_telwrite_filtops;
 1043                 else if (func == FUNCDIAL)
 1044                         kn->kn_fop = &i4btel_seltrue_filtops;
 1045                 else
 1046                         return (1);
 1047                 break;
 1048 
 1049         default:
 1050                 return (1);
 1051         }
 1052 
 1053         kn->kn_hook = sc;
 1054 
 1055         s = splhigh();
 1056         SLIST_INSERT_HEAD(klist, kn, kn_selnext);
 1057         splx(s);
 1058 
 1059         return (0);
 1060 }
 1061 
 1062 #else /* OS_USES_POLL */
 1063 
 1064 /*---------------------------------------------------------------------------*
 1065  *      device driver select
 1066  *---------------------------------------------------------------------------*/
 1067 PDEVSTATIC int
 1068 i4btelsel(dev_t dev, int rw, struct lwp *l)
 1069 {
 1070         int s;
 1071         int unit = UNIT(dev);
 1072         int func = FUNC(dev);
 1073 
 1074         tel_sc_t *sc = &tel_sc[unit][func];
 1075 
 1076         s = splhigh();
 1077 
 1078         if (!(sc->devstate & ST_ISOPEN))
 1079         {
 1080                 NDBGL4(L4_TELDBG, "i4btel%d, !ST_ISOPEN", unit);
 1081                 splx(s);
 1082                 return(0);
 1083         }
 1084 
 1085         if (func == FUNCTEL)
 1086         {
 1087                 /* Don't even bother if we're not connected */
 1088                 if (!(sc->devstate & ST_CONNECTED) || sc->isdn_linktab == NULL)
 1089                 {
 1090                         splx(s);
 1091                         return 0;
 1092                 }
 1093 
 1094                 if (rw == FREAD)
 1095                 {
 1096                         if (!IF_QEMPTY(sc->isdn_linktab->rx_queue))
 1097                         {
 1098                                 NDBGL4(L4_TELDBG, "i4btel%d, FREAD", unit);
 1099                                 splx(s);
 1100                                 return 1;
 1101                         }
 1102                 }
 1103                 else if (rw == FWRITE)
 1104                 {
 1105                         if (!IF_QFULL(sc->isdn_linktab->tx_queue))
 1106                         {
 1107                                 NDBGL4(L4_TELDBG, "i4btel%d, FWRITE", unit);
 1108                                 splx(s);
 1109                                 return 1;
 1110                         }
 1111                 }
 1112         }
 1113         else if (func == FUNCDIAL)
 1114         {
 1115                 if (rw == FWRITE)
 1116                 {
 1117                         NDBGL4(L4_TELDBG, "i4bteld%d,  FWRITE", unit);
 1118                         splx(s);
 1119                         return 1;
 1120                 }
 1121 
 1122                 if (rw == FREAD)
 1123                 {
 1124                         NDBGL4(L4_TELDBG, "i4bteld%d,  FREAD, result = %d", unit, sc->result);
 1125                         if (sc->result != 0)
 1126                         {
 1127                                 splx(s);
 1128                                 return 1;
 1129                         }
 1130                 }
 1131         }
 1132 
 1133         NDBGL4(L4_TELDBG, "i4bteld%d,  selrecord", unit);
 1134         selrecord(l, &sc->selp);
 1135         splx(s);
 1136         return 0;
 1137 }
 1138 
 1139 #endif /* OS_USES_POLL */
 1140 
 1141 /*===========================================================================*
 1142  *                      ISDN INTERFACE ROUTINES
 1143  *===========================================================================*/
 1144 
 1145 /*---------------------------------------------------------------------------*
 1146 *       this routine is called from L4 handler at connect time
 1147  *---------------------------------------------------------------------------*/
 1148 static void
 1149 tel_connect(void *softc, void *cdp)
 1150 {
 1151         tel_sc_t *sc = softc;
 1152 
 1153         /* audio device */
 1154 
 1155         sc->cdp = (call_desc_t *)cdp;
 1156 
 1157         sc->devstate |= ST_CONNECTED;
 1158 
 1159         /* dialer device */
 1160 
 1161         sc = sc->dialer;
 1162 
 1163         if(sc->devstate == ST_ISOPEN)
 1164         {
 1165                 sc->result = RSP_CONN;
 1166 
 1167                 if(sc->devstate & ST_RDWAITDATA)
 1168                 {
 1169                         sc->devstate &= ~ST_RDWAITDATA;
 1170                         wakeup((caddr_t) &sc->result);
 1171                 }
 1172                 selnotify(&sc->selp, 0);
 1173         }
 1174 }
 1175 
 1176 /*---------------------------------------------------------------------------*
 1177  *      this routine is called from L4 handler at disconnect time
 1178  *---------------------------------------------------------------------------*/
 1179 static void
 1180 tel_disconnect(void *softc, void *cdp)
 1181 {
 1182         tel_sc_t *sc = softc;
 1183 
 1184         /* audio device */
 1185 
 1186         sc->devstate &= ~ST_CONNECTED;
 1187 
 1188         if(sc->devstate & ST_RDWAITDATA)
 1189         {
 1190                 sc->devstate &= ~ST_RDWAITDATA;
 1191                 wakeup((caddr_t) &sc->isdn_linktab->rx_queue);
 1192         }
 1193 
 1194         if(sc->devstate & ST_WRWAITEMPTY)
 1195         {
 1196                 sc->devstate &= ~ST_WRWAITEMPTY;
 1197                 wakeup((caddr_t) &sc->isdn_linktab->tx_queue);
 1198         }
 1199 
 1200         /* dialer device */
 1201 
 1202         sc = sc->dialer;
 1203 
 1204         if(sc->devstate & ST_ISOPEN)
 1205         {
 1206                 sc->result = RSP_HUP;
 1207 
 1208                 if(sc->devstate & ST_RDWAITDATA)
 1209                 {
 1210                         sc->devstate &= ~ST_RDWAITDATA;
 1211                         wakeup((caddr_t) &sc->result);
 1212                 }
 1213                 selnotify(&sc->selp, 0);
 1214 
 1215                 if (sc->devstate & ST_TONE) {
 1216                         sc->devstate &= ~ST_TONE;
 1217                         wakeup((caddr_t) &sc->tones);
 1218                 }
 1219         }
 1220 }
 1221 
 1222 /*---------------------------------------------------------------------------*
 1223  *      feedback from daemon in case of dial problems
 1224  *---------------------------------------------------------------------------*/
 1225 static void
 1226 tel_dialresponse(void *softc, int status, cause_t cause)
 1227 {
 1228         tel_sc_t *sc = ((struct tel_softc*)softc)->dialer;
 1229 
 1230         NDBGL4(L4_TELDBG, "status=%d, cause=0x%4x", status, cause);
 1231 
 1232         if((sc->devstate == ST_ISOPEN) && status)
 1233         {
 1234                 sc->result = RSP_NOA;
 1235 
 1236                 if(sc->devstate & ST_RDWAITDATA)
 1237                 {
 1238                         sc->devstate &= ~ST_RDWAITDATA;
 1239                         wakeup((caddr_t) &sc->result);
 1240                 }
 1241                 selnotify(&sc->selp, 0);
 1242         }
 1243 }
 1244 
 1245 /*---------------------------------------------------------------------------*
 1246  *      interface up/down
 1247  *---------------------------------------------------------------------------*/
 1248 static void
 1249 tel_updown(void *softc, int updown)
 1250 {
 1251 }
 1252 
 1253 /*---------------------------------------------------------------------------*
 1254  *      this routine is called from the HSCX interrupt handler
 1255  *      when a new frame (mbuf) has been received and was put on
 1256  *      the rx queue.
 1257  *---------------------------------------------------------------------------*/
 1258 static void
 1259 tel_rx_data_rdy(void *softc)
 1260 {
 1261         tel_sc_t *sc = softc;
 1262 
 1263         if(sc->devstate & ST_RDWAITDATA)
 1264         {
 1265                 sc->devstate &= ~ST_RDWAITDATA;
 1266                 wakeup((caddr_t) &sc->isdn_linktab->rx_queue);
 1267         }
 1268         selnotify(&sc->selp, 0);
 1269 }
 1270 
 1271 /*---------------------------------------------------------------------------*
 1272  *      this routine is called from the HSCX interrupt handler
 1273  *      when the last frame has been sent out and there is no
 1274  *      further frame (mbuf) in the tx queue.
 1275  *---------------------------------------------------------------------------*/
 1276 static void
 1277 tel_tx_queue_empty(void *softc)
 1278 {
 1279         tel_sc_t *sc = softc;
 1280 
 1281         if(sc->devstate & ST_WRWAITEMPTY)
 1282         {
 1283                 sc->devstate &= ~ST_WRWAITEMPTY;
 1284                 wakeup((caddr_t) &sc->isdn_linktab->tx_queue);
 1285         }
 1286         if(sc->devstate & ST_TONE) {
 1287                 tel_tone(sc);
 1288         } else {
 1289                 selnotify(&sc->selp, 0);
 1290         }
 1291 }
 1292 
 1293 /*---------------------------------------------------------------------------*
 1294  *      this routine is called from the HSCX interrupt handler
 1295  *      each time a packet is received or transmitted.
 1296  *---------------------------------------------------------------------------*/
 1297 static void
 1298 tel_activity(void *softc, int rxtx)
 1299 {
 1300         struct tel_softc *sc = softc;
 1301 
 1302         if(sc->cdp)
 1303                 sc->cdp->last_active_time = SECOND;
 1304 }
 1305 
 1306 /*---------------------------------------------------------------------------*
 1307  *      setup the isdn_linktab for this driver
 1308  *---------------------------------------------------------------------------*/
 1309 static void
 1310 tel_set_linktab(void *softc, isdn_link_t *ilt)
 1311 {
 1312         tel_sc_t *sc = softc;
 1313         sc->isdn_linktab = ilt;
 1314 }
 1315 
 1316 /*---------------------------------------------------------------------------*
 1317  *      return the instance
 1318  *---------------------------------------------------------------------------*/
 1319 static void*
 1320 tel_get_softc(int unit)
 1321 {
 1322         return &tel_sc[unit][FUNCTEL];
 1323 }
 1324 
 1325 /*===========================================================================*
 1326  *      AUDIO FORMAT CONVERSION (produced by running g711conv)
 1327  *===========================================================================*/
 1328 
 1329 /*---------------------------------------------------------------------------*
 1330  *      A-law to mu-law conversion
 1331  *---------------------------------------------------------------------------*/
 1332 static unsigned char a2u_tab[256] = {
 1333 /* 00 */        0x2a, 0x2b, 0x28, 0x29, 0x2e, 0x2f, 0x2c, 0x2d,
 1334 /* 08 */        0x22, 0x23, 0x20, 0x21, 0x26, 0x27, 0x24, 0x25,
 1335 /* 10 */        0x39, 0x3a, 0x37, 0x38, 0x3d, 0x3e, 0x3b, 0x3c,
 1336 /* 18 */        0x31, 0x32, 0x30, 0x30, 0x35, 0x36, 0x33, 0x34,
 1337 /* 20 */        0x0a, 0x0b, 0x08, 0x09, 0x0e, 0x0f, 0x0c, 0x0d,
 1338 /* 28 */        0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05,
 1339 /* 30 */        0x1a, 0x1b, 0x18, 0x19, 0x1e, 0x1f, 0x1c, 0x1d,
 1340 /* 38 */        0x12, 0x13, 0x10, 0x11, 0x16, 0x17, 0x14, 0x15,
 1341 /* 40 */        0x62, 0x63, 0x60, 0x61, 0x66, 0x67, 0x64, 0x65,
 1342 /* 48 */        0x5d, 0x5d, 0x5c, 0x5c, 0x5f, 0x5f, 0x5e, 0x5e,
 1343 /* 50 */        0x74, 0x76, 0x70, 0x72, 0x7c, 0x7e, 0x78, 0x7a,
 1344 /* 58 */        0x6a, 0x6b, 0x68, 0x69, 0x6e, 0x6f, 0x6c, 0x6d,
 1345 /* 60 */        0x48, 0x49, 0x46, 0x47, 0x4c, 0x4d, 0x4a, 0x4b,
 1346 /* 68 */        0x40, 0x41, 0x3f, 0x3f, 0x44, 0x45, 0x42, 0x43,
 1347 /* 70 */        0x56, 0x57, 0x54, 0x55, 0x5a, 0x5b, 0x58, 0x59,
 1348 /* 78 */        0x4f, 0x4f, 0x4e, 0x4e, 0x52, 0x53, 0x50, 0x51,
 1349 /* 80 */        0xaa, 0xab, 0xa8, 0xa9, 0xae, 0xaf, 0xac, 0xad,
 1350 /* 88 */        0xa2, 0xa3, 0xa0, 0xa1, 0xa6, 0xa7, 0xa4, 0xa5,
 1351 /* 90 */        0xb9, 0xba, 0xb7, 0xb8, 0xbd, 0xbe, 0xbb, 0xbc,
 1352 /* 98 */        0xb1, 0xb2, 0xb0, 0xb0, 0xb5, 0xb6, 0xb3, 0xb4,
 1353 /* a0 */        0x8a, 0x8b, 0x88, 0x89, 0x8e, 0x8f, 0x8c, 0x8d,
 1354 /* a8 */        0x82, 0x83, 0x80, 0x81, 0x86, 0x87, 0x84, 0x85,
 1355 /* b0 */        0x9a, 0x9b, 0x98, 0x99, 0x9e, 0x9f, 0x9c, 0x9d,
 1356 /* b8 */        0x92, 0x93, 0x90, 0x91, 0x96, 0x97, 0x94, 0x95,
 1357 /* c0 */        0xe2, 0xe3, 0xe0, 0xe1, 0xe6, 0xe7, 0xe4, 0xe5,
 1358 /* c8 */        0xdd, 0xdd, 0xdc, 0xdc, 0xdf, 0xdf, 0xde, 0xde,
 1359 /* d0 */        0xf4, 0xf6, 0xf0, 0xf2, 0xfc, 0xfe, 0xf8, 0xfa,
 1360 /* d8 */        0xea, 0xeb, 0xe8, 0xe9, 0xee, 0xef, 0xec, 0xed,
 1361 /* e0 */        0xc8, 0xc9, 0xc6, 0xc7, 0xcc, 0xcd, 0xca, 0xcb,
 1362 /* e8 */        0xc0, 0xc1, 0xbf, 0xbf, 0xc4, 0xc5, 0xc2, 0xc3,
 1363 /* f0 */        0xd6, 0xd7, 0xd4, 0xd5, 0xda, 0xdb, 0xd8, 0xd9,
 1364 /* f8 */        0xcf, 0xcf, 0xce, 0xce, 0xd2, 0xd3, 0xd0, 0xd1
 1365 };
 1366 
 1367 /*---------------------------------------------------------------------------*
 1368  *      mu-law to A-law conversion
 1369  *---------------------------------------------------------------------------*/
 1370 static unsigned char u2a_tab[256] = {
 1371 /* 00 */        0x2a, 0x2b, 0x28, 0x29, 0x2e, 0x2f, 0x2c, 0x2d,
 1372 /* 08 */        0x22, 0x23, 0x20, 0x21, 0x26, 0x27, 0x24, 0x25,
 1373 /* 10 */        0x3a, 0x3b, 0x38, 0x39, 0x3e, 0x3f, 0x3c, 0x3d,
 1374 /* 18 */        0x32, 0x33, 0x30, 0x31, 0x36, 0x37, 0x34, 0x35,
 1375 /* 20 */        0x0a, 0x0b, 0x08, 0x09, 0x0e, 0x0f, 0x0c, 0x0d,
 1376 /* 28 */        0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05,
 1377 /* 30 */        0x1b, 0x18, 0x19, 0x1e, 0x1f, 0x1c, 0x1d, 0x12,
 1378 /* 38 */        0x13, 0x10, 0x11, 0x16, 0x17, 0x14, 0x15, 0x6a,
 1379 /* 40 */        0x68, 0x69, 0x6e, 0x6f, 0x6c, 0x6d, 0x62, 0x63,
 1380 /* 48 */        0x60, 0x61, 0x66, 0x67, 0x64, 0x65, 0x7a, 0x78,
 1381 /* 50 */        0x7e, 0x7f, 0x7c, 0x7d, 0x72, 0x73, 0x70, 0x71,
 1382 /* 58 */        0x76, 0x77, 0x74, 0x75, 0x4b, 0x49, 0x4f, 0x4d,
 1383 /* 60 */        0x42, 0x43, 0x40, 0x41, 0x46, 0x47, 0x44, 0x45,
 1384 /* 68 */        0x5a, 0x5b, 0x58, 0x59, 0x5e, 0x5f, 0x5c, 0x5d,
 1385 /* 70 */        0x52, 0x52, 0x53, 0x53, 0x50, 0x50, 0x51, 0x51,
 1386 /* 78 */        0x56, 0x56, 0x57, 0x57, 0x54, 0x54, 0x55, 0x55,
 1387 /* 80 */        0xaa, 0xab, 0xa8, 0xa9, 0xae, 0xaf, 0xac, 0xad,
 1388 /* 88 */        0xa2, 0xa3, 0xa0, 0xa1, 0xa6, 0xa7, 0xa4, 0xa5,
 1389 /* 90 */        0xba, 0xbb, 0xb8, 0xb9, 0xbe, 0xbf, 0xbc, 0xbd,
 1390 /* 98 */        0xb2, 0xb3, 0xb0, 0xb1, 0xb6, 0xb7, 0xb4, 0xb5,
 1391 /* a0 */        0x8a, 0x8b, 0x88, 0x89, 0x8e, 0x8f, 0x8c, 0x8d,
 1392 /* a8 */        0x82, 0x83, 0x80, 0x81, 0x86, 0x87, 0x84, 0x85,
 1393 /* b0 */        0x9b, 0x98, 0x99, 0x9e, 0x9f, 0x9c, 0x9d, 0x92,
 1394 /* b8 */        0x93, 0x90, 0x91, 0x96, 0x97, 0x94, 0x95, 0xea,
 1395 /* c0 */        0xe8, 0xe9, 0xee, 0xef, 0xec, 0xed, 0xe2, 0xe3,
 1396 /* c8 */        0xe0, 0xe1, 0xe6, 0xe7, 0xe4, 0xe5, 0xfa, 0xf8,
 1397 /* d0 */        0xfe, 0xff, 0xfc, 0xfd, 0xf2, 0xf3, 0xf0, 0xf1,
 1398 /* d8 */        0xf6, 0xf7, 0xf4, 0xf5, 0xcb, 0xc9, 0xcf, 0xcd,
 1399 /* e0 */        0xc2, 0xc3, 0xc0, 0xc1, 0xc6, 0xc7, 0xc4, 0xc5,
 1400 /* e8 */        0xda, 0xdb, 0xd8, 0xd9, 0xde, 0xdf, 0xdc, 0xdd,
 1401 /* f0 */        0xd2, 0xd2, 0xd3, 0xd3, 0xd0, 0xd0, 0xd1, 0xd1,
 1402 /* f8 */        0xd6, 0xd6, 0xd7, 0xd7, 0xd4, 0xd4, 0xd5, 0xd5
 1403 };
 1404 
 1405 /*---------------------------------------------------------------------------*
 1406  *      reverse bits in a byte
 1407  *---------------------------------------------------------------------------*/
 1408 static unsigned char bitreverse[256] = {
 1409 /* 00 */        0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
 1410 /* 08 */        0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
 1411 /* 10 */        0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
 1412 /* 18 */        0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
 1413 /* 20 */        0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
 1414 /* 28 */        0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
 1415 /* 30 */        0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
 1416 /* 38 */        0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
 1417 /* 40 */        0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
 1418 /* 48 */        0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
 1419 /* 50 */        0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
 1420 /* 58 */        0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
 1421 /* 60 */        0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
 1422 /* 68 */        0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
 1423 /* 70 */        0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
 1424 /* 78 */        0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
 1425 /* 80 */        0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
 1426 /* 88 */        0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
 1427 /* 90 */        0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
 1428 /* 98 */        0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
 1429 /* a0 */        0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
 1430 /* a8 */        0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
 1431 /* b0 */        0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
 1432 /* b8 */        0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
 1433 /* c0 */        0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
 1434 /* c8 */        0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
 1435 /* d0 */        0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
 1436 /* d8 */        0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
 1437 /* e0 */        0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
 1438 /* e8 */        0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
 1439 /* f0 */        0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
 1440 /* f8 */        0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
 1441 };
 1442 
 1443 static u_char sinetab[8000] = { 213, 213, 213, 213, 213, 213, 213, 212,
 1444 212, 212, 212, 212, 212, 215, 215, 215, 215, 215, 215, 214, 214,
 1445 214, 214, 214, 214, 209, 209, 209, 209, 209, 209, 209, 208, 208,
 1446 208, 208, 208, 208, 211, 211, 211, 211, 211, 211, 210, 210, 210,
 1447 210, 210, 210, 221, 221, 221, 221, 221, 221, 220, 220, 220, 220,
 1448 220, 220, 220, 223, 223, 223, 223, 223, 223, 222, 222, 222, 222,
 1449 222, 222, 217, 217, 217, 217, 217, 217, 216, 216, 216, 216, 216,
 1450 216, 216, 219, 219, 219, 219, 219, 219, 218, 218, 218, 218, 218,
 1451 218, 197, 197, 197, 197, 197, 197, 196, 196, 196, 196, 196, 196,
 1452 196, 199, 199, 199, 199, 199, 199, 198, 198, 198, 198, 198, 198,
 1453 193, 193, 193, 193, 193, 193, 192, 192, 192, 192, 192, 192, 192,
 1454 195, 195, 195, 195, 195, 195, 194, 194, 194, 194, 194, 194, 205,
 1455 205, 205, 205, 205, 205, 204, 204, 204, 204, 204, 204, 204, 207,
 1456 207, 207, 207, 207, 207, 206, 206, 206, 206, 206, 206, 201, 201,
 1457 201, 201, 201, 201, 200, 200, 200, 200, 200, 200, 200, 203, 203,
 1458 203, 203, 203, 203, 202, 202, 202, 202, 202, 202, 245, 245, 245,
 1459 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 244, 244, 244,
 1460 244, 244, 244, 244, 244, 244, 244, 244, 244, 247, 247, 247, 247,
 1461 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 246, 246, 246,
 1462 246, 246, 246, 246, 246, 246, 246, 246, 246, 241, 241, 241, 241,
 1463 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 240, 240,
 1464 240, 240, 240, 240, 240, 240, 240, 240, 243, 243, 243, 243, 243,
 1465 243, 243, 243, 243, 243, 243, 243, 243, 242, 242, 242, 242, 242,
 1466 242, 242, 242, 242, 242, 242, 242, 242, 253, 253, 253, 253, 253,
 1467 253, 253, 253, 253, 253, 253, 253, 253, 252, 252, 252, 252, 252,
 1468 252, 252, 252, 252, 252, 252, 252, 255, 255, 255, 255, 255, 255,
 1469 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254,
 1470 254, 254, 254, 254, 254, 254, 254, 249, 249, 249, 249, 249, 249,
 1471 249, 249, 249, 249, 249, 249, 249, 248, 248, 248, 248, 248, 248,
 1472 248, 248, 248, 248, 248, 248, 248, 251, 251, 251, 251, 251, 251,
 1473 251, 251, 251, 251, 251, 251, 251, 250, 250, 250, 250, 250, 250,
 1474 250, 250, 250, 250, 250, 250, 250, 229, 229, 229, 229, 229, 229,
 1475 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
 1476 229, 229, 229, 229, 229, 229, 229, 228, 228, 228, 228, 228, 228,
 1477 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
 1478 228, 228, 228, 228, 228, 228, 228, 228, 231, 231, 231, 231, 231,
 1479 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
 1480 231, 231, 231, 231, 231, 231, 231, 231, 231, 230, 230, 230, 230,
 1481 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
 1482 230, 230, 230, 230, 230, 230, 230, 230, 230, 225, 225, 225, 225,
 1483 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
 1484 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 224, 224,
 1485 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
 1486 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 227,
 1487 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
 1488 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
 1489 227, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
 1490 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
 1491 226, 226, 226, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
 1492 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
 1493 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, 236,
 1494 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
 1495 236, 236, 236, 236, 236, 236, 236, 236, 239, 239, 239, 239, 239,
 1496 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
 1497 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 238, 238,
 1498 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
 1499 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
 1500 238, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
 1501 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
 1502 233, 233, 233, 233, 233, 232, 232, 232, 232, 232, 232, 232, 232,
 1503 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
 1504 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 235, 235, 235,
 1505 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
 1506 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
 1507 235, 235, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
 1508 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
 1509 234, 234, 234, 234, 234, 234, 234, 149, 149, 149, 149, 149, 149,
 1510 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1511 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1512 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1513 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1514 149, 149, 149, 149, 149, 149, 149, 148, 148, 148, 148, 148, 148,
 1515 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1516 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1517 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1518 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1519 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 151, 151, 151,
 1520 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1521 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1522 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1523 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1524 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1525 151, 151, 151, 151, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1526 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1527 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1528 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1529 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1530 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1531 150, 150, 150, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1532 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1533 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1534 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1535 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1536 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1537 145, 145, 145, 145, 145, 145, 145, 145, 144, 144, 144, 144, 144,
 1538 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1539 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1540 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1541 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1542 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1543 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1544 144, 144, 144, 144, 144, 144, 144, 144, 144, 147, 147, 147, 147,
 1545 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1546 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1547 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1548 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1549 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1550 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1551 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1552 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 146, 146, 146,
 1553 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1554 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1555 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1556 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1557 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1558 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1559 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1560 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1561 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1562 146, 146, 146, 146, 146, 146, 157, 157, 157, 157, 157, 157, 157,
 1563 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1564 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1565 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1566 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1567 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1568 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1569 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1570 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1571 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1572 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1573 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1574 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1575 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1576 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1577 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1578 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1579 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1580 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1581 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1582 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1583 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1584 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1585 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1586 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1587 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1588 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1589 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1590 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1591 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1592 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1593 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1594 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1595 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1596 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1597 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1598 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1599 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1600 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1601 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1602 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1603 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1604 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1605 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1606 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1607 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1608 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1609 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1610 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1611 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1612 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1613 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1614 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1615 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1616 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1617 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1618 156, 156, 156, 156, 156, 156, 156, 157, 157, 157, 157, 157, 157,
 1619 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1620 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1621 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1622 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1623 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1624 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1625 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1626 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1627 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1628 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1629 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1630 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1631 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1632 157, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1633 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1634 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1635 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1636 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1637 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1638 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1639 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1640 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1641 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, 147,
 1642 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1643 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1644 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1645 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1646 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1647 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1648 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1649 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 144, 144,
 1650 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1651 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1652 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1653 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1654 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1655 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1656 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 145,
 1657 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1658 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1659 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1660 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1661 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1662 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1663 145, 145, 145, 145, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1664 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1665 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1666 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1667 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1668 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1669 150, 150, 150, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1670 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1671 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1672 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1673 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1674 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 148, 148, 148,
 1675 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1676 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1677 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1678 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1679 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1680 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1681 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1682 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1683 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1684 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1685 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
 1686 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
 1687 234, 234, 234, 234, 234, 235, 235, 235, 235, 235, 235, 235, 235,
 1688 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
 1689 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 232, 232, 232,
 1690 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
 1691 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
 1692 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
 1693 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
 1694 233, 233, 233, 233, 233, 233, 238, 238, 238, 238, 238, 238, 238,
 1695 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
 1696 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 239, 239, 239,
 1697 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
 1698 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 236,
 1699 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
 1700 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
 1701 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
 1702 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
 1703 237, 237, 237, 237, 226, 226, 226, 226, 226, 226, 226, 226, 226,
 1704 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
 1705 226, 226, 226, 226, 226, 226, 227, 227, 227, 227, 227, 227, 227,
 1706 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
 1707 227, 227, 227, 227, 227, 227, 227, 227, 224, 224, 224, 224, 224,
 1708 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
 1709 224, 224, 224, 224, 224, 224, 224, 224, 224, 225, 225, 225, 225,
 1710 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
 1711 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 230, 230,
 1712 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
 1713 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, 231,
 1714 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
 1715 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 228,
 1716 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
 1717 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
 1718 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
 1719 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
 1720 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
 1721 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251,
 1722 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
 1723 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
 1724 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
 1725 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
 1726 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 253,
 1727 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 242,
 1728 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 243,
 1729 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 240,
 1730 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241,
 1731 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 246, 246,
 1732 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 247, 247,
 1733 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 244, 244,
 1734 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 245, 245, 245,
 1735 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 202, 202, 202,
 1736 202, 202, 202, 203, 203, 203, 203, 203, 203, 200, 200, 200, 200,
 1737 200, 200, 200, 201, 201, 201, 201, 201, 201, 206, 206, 206, 206,
 1738 206, 206, 207, 207, 207, 207, 207, 207, 204, 204, 204, 204, 204,
 1739 204, 204, 205, 205, 205, 205, 205, 205, 194, 194, 194, 194, 194,
 1740 194, 195, 195, 195, 195, 195, 195, 192, 192, 192, 192, 192, 192,
 1741 192, 193, 193, 193, 193, 193, 193, 198, 198, 198, 198, 198, 198,
 1742 199, 199, 199, 199, 199, 199, 196, 196, 196, 196, 196, 196, 196,
 1743 197, 197, 197, 197, 197, 197, 218, 218, 218, 218, 218, 218, 219,
 1744 219, 219, 219, 219, 219, 216, 216, 216, 216, 216, 216, 216, 217,
 1745 217, 217, 217, 217, 217, 222, 222, 222, 222, 222, 222, 223, 223,
 1746 223, 223, 223, 223, 220, 220, 220, 220, 220, 220, 220, 221, 221,
 1747 221, 221, 221, 221, 210, 210, 210, 210, 210, 210, 211, 211, 211,
 1748 211, 211, 211, 208, 208, 208, 208, 208, 208, 209, 209, 209, 209,
 1749 209, 209, 209, 214, 214, 214, 214, 214, 214, 215, 215, 215, 215,
 1750 215, 215, 212, 212, 212, 212, 212, 212, 213, 213, 213, 213, 213,
 1751 213, 213, 90, 90, 90, 85, 85, 85, 85, 85, 85, 84, 84, 84, 84, 84,
 1752 84, 87, 87, 87, 87, 87, 87, 86, 86, 86, 86, 86, 86, 81, 81, 81,
 1753 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 83, 83, 83, 83, 83, 83,
 1754 82, 82, 82, 82, 82, 82, 93, 93, 93, 93, 93, 93, 93, 92, 92, 92,
 1755 92, 92, 92, 95, 95, 95, 95, 95, 95, 94, 94, 94, 94, 94, 94, 89,
 1756 89, 89, 89, 89, 89, 88, 88, 88, 88, 88, 88, 88, 91, 91, 91, 91,
 1757 91, 91, 90, 90, 90, 90, 90, 90, 69, 69, 69, 69, 69, 69, 68, 68,
 1758 68, 68, 68, 68, 68, 71, 71, 71, 71, 71, 71, 70, 70, 70, 70, 70,
 1759 70, 65, 65, 65, 65, 65, 65, 64, 64, 64, 64, 64, 64, 64, 67, 67,
 1760 67, 67, 67, 67, 66, 66, 66, 66, 66, 66, 77, 77, 77, 77, 77, 77,
 1761 76, 76, 76, 76, 76, 76, 76, 79, 79, 79, 79, 79, 79, 78, 78, 78,
 1762 78, 78, 78, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72,
 1763 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 74, 117, 117, 117, 117,
 1764 117, 117, 117, 117, 117, 117, 117, 117, 117, 116, 116, 116, 116,
 1765 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119,
 1766 119, 119, 119, 119, 119, 119, 119, 119, 118, 118, 118, 118, 118,
 1767 118, 118, 118, 118, 118, 118, 118, 118, 113, 113, 113, 113, 113,
 1768 113, 113, 113, 113, 113, 113, 113, 113, 112, 112, 112, 112, 112,
 1769 112, 112, 112, 112, 112, 112, 112, 115, 115, 115, 115, 115, 115,
 1770 115, 115, 115, 115, 115, 115, 115, 114, 114, 114, 114, 114, 114,
 1771 114, 114, 114, 114, 114, 114, 114, 125, 125, 125, 125, 125, 125,
 1772 125, 125, 125, 125, 125, 125, 125, 124, 124, 124, 124, 124, 124,
 1773 124, 124, 124, 124, 124, 124, 124, 127, 127, 127, 127, 127, 127,
 1774 127, 127, 127, 127, 127, 127, 126, 126, 126, 126, 126, 126, 126,
 1775 126, 126, 126, 126, 126, 126, 121, 121, 121, 121, 121, 121, 121,
 1776 121, 121, 121, 121, 121, 121, 120, 120, 120, 120, 120, 120, 120,
 1777 120, 120, 120, 120, 120, 120, 123, 123, 123, 123, 123, 123, 123,
 1778 123, 123, 123, 123, 123, 123, 122, 122, 122, 122, 122, 122, 122,
 1779 122, 122, 122, 122, 122, 122, 101, 101, 101, 101, 101, 101, 101,
 1780 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
 1781 101, 101, 101, 101, 101, 101, 101, 100, 100, 100, 100, 100, 100,
 1782 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
 1783 100, 100, 100, 100, 100, 100, 100, 103, 103, 103, 103, 103, 103,
 1784 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
 1785 103, 103, 103, 103, 103, 103, 103, 103, 102, 102, 102, 102, 102,
 1786 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
 1787 102, 102, 102, 102, 102, 102, 102, 102, 102, 97, 97, 97, 97, 97,
 1788 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
 1789 97, 97, 97, 97, 97, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
 1790 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
 1791 96, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
 1792 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98,
 1793 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
 1794 98, 98, 98, 98, 98, 98, 98, 98, 98, 109, 109, 109, 109, 109, 109,
 1795 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
 1796 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108,
 1797 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
 1798 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 111,
 1799 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
 1800 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
 1801 111, 111, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
 1802 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
 1803 110, 110, 110, 110, 110, 110, 105, 105, 105, 105, 105, 105, 105,
 1804 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
 1805 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104,
 1806 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
 1807 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
 1808 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
 1809 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
 1810 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106,
 1811 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
 1812 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 21,
 1813 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
 1814 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
 1815 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
 1816 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
 1817 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
 1818 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
 1819 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
 1820 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
 1821 20, 20, 20, 20, 20, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
 1822 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
 1823 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
 1824 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
 1825 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 22, 22, 22,
 1826 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1827 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1828 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1829 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1830 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 17, 17, 17, 17, 17, 17,
 1831 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1832 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1833 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1834 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1835 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16,
 1836 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1837 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1838 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1839 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1840 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1841 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 19, 19, 19, 19, 19, 19,
 1842 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1843 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1844 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1845 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1846 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1847 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1848 19, 19, 19, 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1849 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1850 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1851 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1852 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1853 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1854 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1855 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1856 18, 18, 18, 18, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1857 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1858 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1859 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1860 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1861 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1862 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1863 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1864 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1865 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1866 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1867 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 28, 28, 28, 28, 28,
 1868 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1869 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1870 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1871 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1872 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1873 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1874 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1875 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1876 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1877 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1878 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1879 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1880 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1881 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1882 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1883 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1884 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1885 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1886 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1887 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1888 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1889 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1890 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1891 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1892 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1893 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1894 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1895 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1896 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1897 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1898 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1899 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1900 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1901 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1902 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1903 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1904 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1905 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1906 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1907 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1908 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1909 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1910 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1911 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 18, 18, 18, 18, 18,
 1912 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1913 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1914 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1915 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1916 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1917 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1918 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1919 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19,
 1920 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1921 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1922 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1923 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1924 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1925 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1926 19, 19, 19, 19, 19, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1927 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1928 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1929 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1930 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1931 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1932 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1933 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1934 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1935 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1936 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1937 17, 17, 17, 17, 17, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1938 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1939 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1940 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1941 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1942 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
 1943 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
 1944 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
 1945 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
 1946 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 20, 20, 20, 20, 20, 20,
 1947 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
 1948 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
 1949 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
 1950 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,
 1951 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
 1952 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
 1953 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
 1954 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
 1955 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
 1956 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
 1957 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107,
 1958 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
 1959 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104,
 1960 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
 1961 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
 1962 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
 1963 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
 1964 105, 105, 105, 105, 105, 105, 110, 110, 110, 110, 110, 110, 110,
 1965 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
 1966 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 111, 111,
 1967 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
 1968 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
 1969 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
 1970 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
 1971 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
 1972 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
 1973 109, 109, 109, 109, 109, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
 1974 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
 1975 98, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
 1976 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 96, 96,
 1977 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
 1978 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, 97, 97, 97,
 1979 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
 1980 97, 97, 97, 97, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
 1981 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
 1982 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, 103, 103, 103,
 1983 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
 1984 103, 103, 103, 103, 103, 100, 100, 100, 100, 100, 100, 100, 100,
 1985 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
 1986 100, 100, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 101,
 1987 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
 1988 101, 101, 101, 101, 101, 101, 122, 122, 122, 122, 122, 122, 122,
 1989 122, 122, 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123,
 1990 123, 123, 123, 123, 123, 123, 120, 120, 120, 120, 120, 120, 120,
 1991 120, 120, 120, 120, 120, 120, 121, 121, 121, 121, 121, 121, 121,
 1992 121, 121, 121, 121, 121, 121, 126, 126, 126, 126, 126, 126, 126,
 1993 126, 126, 126, 126, 126, 126, 127, 127, 127, 127, 127, 127, 127,
 1994 127, 127, 127, 127, 127, 124, 124, 124, 124, 124, 124, 124, 124,
 1995 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 125, 125,
 1996 125, 125, 125, 125, 125, 114, 114, 114, 114, 114, 114, 114, 114,
 1997 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, 115, 115, 115,
 1998 115, 115, 115, 115, 115, 112, 112, 112, 112, 112, 112, 112, 112,
 1999 112, 112, 112, 112, 113, 113, 113, 113, 113, 113, 113, 113, 113,
 2000 113, 113, 113, 113, 118, 118, 118, 118, 118, 118, 118, 118, 118,
 2001 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119,
 2002 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
 2003 116, 116, 116, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
 2004 117, 117, 117, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 72,
 2005 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 78, 78, 78, 78,
 2006 78, 78, 79, 79, 79, 79, 79, 79, 76, 76, 76, 76, 76, 76, 76, 77,
 2007 77, 77, 77, 77, 77, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67,
 2008 67, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 70, 70,
 2009 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 68, 68, 68, 68, 68, 68,
 2010 68, 69, 69, 69, 69, 69, 69, 90, 90, 90, 90, 90, 90, 91, 91, 91,
 2011 91, 91, 91, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89,
 2012 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 92, 92, 92, 92,
 2013 92, 92, 93, 93, 93, 93, 93, 93, 93, 82, 82, 82, 82, 82, 82, 83,
 2014 83, 83, 83, 83, 83, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81,
 2015 81, 81, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, 87, 87, 84, 84,
 2016 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 90, 90, 90 };
 2017 
 2018 /*===========================================================================*/
 2019 
 2020 #endif /* NISDNTEL > 0 */

Cache object: 9e5017585e2301e133ee1f265d9f0384


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.