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

Cache object: 91cbd793c765a165fce59a1d7766013d


[ 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.