diff options
Diffstat (limited to 'share')
274 files changed, 10584 insertions, 3501 deletions
diff --git a/share/doc/llvm/Makefile b/share/doc/llvm/Makefile index 8fde27acf117..35398786a9cb 100644 --- a/share/doc/llvm/Makefile +++ b/share/doc/llvm/Makefile @@ -1,5 +1,7 @@ SUBDIR= clang +PACKAGE= clang + SRCDIR= ${SRCTOP}/contrib/llvm-project/llvm .PATH: ${SRCDIR} ${SRCDIR}/lib/Support diff --git a/share/doc/llvm/Makefile.inc b/share/doc/llvm/Makefile.inc new file mode 100644 index 000000000000..915410fe46c4 --- /dev/null +++ b/share/doc/llvm/Makefile.inc @@ -0,0 +1 @@ +PACKAGE?= clang diff --git a/share/doc/papers/Makefile b/share/doc/papers/Makefile index 3c702b2aeaaa..0ab8a40d2cb7 100644 --- a/share/doc/papers/Makefile +++ b/share/doc/papers/Makefile @@ -7,7 +7,6 @@ SUBDIR= beyond4.3 \ jail \ kernmalloc \ kerntune \ - malloc \ newvm \ relengr \ sysperf \ diff --git a/share/doc/papers/malloc/Makefile b/share/doc/papers/malloc/Makefile deleted file mode 100644 index 755264466aa3..000000000000 --- a/share/doc/papers/malloc/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -VOLUME= papers -DOC= malloc -SRCS= abs.ms intro.ms kernel.ms malloc.ms problems.ms alternatives.ms \ - performance.ms implementation.ms conclusion.ms -MACROS= -ms - -.include <bsd.doc.mk> diff --git a/share/doc/papers/malloc/abs.ms b/share/doc/papers/malloc/abs.ms deleted file mode 100644 index ef70cec772af..000000000000 --- a/share/doc/papers/malloc/abs.ms +++ /dev/null @@ -1,33 +0,0 @@ -.\" -.\" ---------------------------------------------------------------------------- -.\" "THE BEER-WARE LICENSE" (Revision 42): -.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you -.\" can do whatever you want with this stuff. If we meet some day, and you think -.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp -.\" ---------------------------------------------------------------------------- -.\" -.if n .ND -.TL -Malloc(3) in modern Virtual Memory environments. -.sp -Revised -Fri Apr 5 12:50:07 1996 -.AU -Poul-Henning Kamp -.AI -<phk@FreeBSD.org> -Den Andensidste Viking -Valbygaardsvej 8 -DK-4200 Slagelse -Denmark -.AB -Malloc/free is one of the oldest parts of the C language environment -and obviously the world has changed a bit since it was first made. -The fact that most UNIX kernels have changed from swap/segment to -virtual memory/page based memory management has not been sufficiently -reflected in the implementations of the malloc/free API. -.PP -A new implementation was designed, written, tested and bench-marked -with an eye on the workings and performance characteristics of modern -Virtual Memory systems. -.AE diff --git a/share/doc/papers/malloc/alternatives.ms b/share/doc/papers/malloc/alternatives.ms deleted file mode 100644 index 02efa1f88901..000000000000 --- a/share/doc/papers/malloc/alternatives.ms +++ /dev/null @@ -1,43 +0,0 @@ -.\" -.\" ---------------------------------------------------------------------------- -.\" "THE BEER-WARE LICENSE" (Revision 42): -.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you -.\" can do whatever you want with this stuff. If we meet some day, and you think -.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp -.\" ---------------------------------------------------------------------------- -.\" -.ds RH Alternative implementations -.NH -Alternative implementations -.PP -These problems were actually the inspiration for the first alternative -malloc implementations. -Since their main aim was debugging, they would often use techniques -like allocating a guard zone before and after the chunk, -and possibly filling these guard zones -with some pattern, so accesses outside the allocated chunk could be detected -with some decent probability. -Another widely used technique is to use tables to keep track of which -chunks are actually in which state and so on. -.PP -This class of debugging has been taken to its practical extreme by -the product "Purify" which does the entire memory-coloring exercise -and not only keeps track of what is in use and what isn't, but also -detects if the first reference is a read (which would return undefined -values) and other such violations. -.PP -Later actual complete implementations of malloc arrived, but many of -these still based their workings on the basic schema mentioned previously, -disregarding that in the meantime virtual memory and paging have -become the standard environment. -.PP -The most widely used "alternative" malloc is undoubtedly ``gnumalloc'' -which has received wide acclaim and certainly runs faster than -most stock mallocs. It does, however, tend to fare badly in -cases where paging is the norm rather than the exception. -.PP -The particular malloc that prompted this work basically didn't bother -reusing storage until the kernel forced it to do so by refusing -further allocations with sbrk(2). -That may make sense if you work alone on your own personal mainframe, -but as a general policy it is less than optimal. diff --git a/share/doc/papers/malloc/conclusion.ms b/share/doc/papers/malloc/conclusion.ms deleted file mode 100644 index 9d0d1f2a83a6..000000000000 --- a/share/doc/papers/malloc/conclusion.ms +++ /dev/null @@ -1,46 +0,0 @@ -.\" -.\" ---------------------------------------------------------------------------- -.\" "THE BEER-WARE LICENSE" (Revision 42): -.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you -.\" can do whatever you want with this stuff. If we meet some day, and you think -.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp -.\" ---------------------------------------------------------------------------- -.\" -.ds RH Conclusion and experience. -.NH -Conclusion and experience. -.PP -In general the performance differences between gnumalloc and this -malloc are not that big. -The major difference comes when primary storage is seriously -over-committed, in which case gnumalloc -wastes time paging in pages it's not going to use. -In such cases as much as a factor of five in wall-clock time has -been seen in difference. -Apart from that gnumalloc and this implementation are pretty -much head-on performance-wise. -.PP -Several legacy programs in the BSD 4.4 Lite distribution had -code that depended on the memory returned from malloc -being zeroed. In a couple of cases, free(3) was called more than -once for the same allocation, and a few cases even called free(3) -with pointers to objects in the data section or on the stack. -.PP -A couple of users have reported that using this malloc on other -platforms yielded "pretty impressive results", but no hard benchmarks -have been made. -.ds RH Acknowledgements & references. -.NH -Acknowledgements & references. -.PP -The first implementation of this algorithm was actually a file system, -done in assembler using 5-hole ``Baudot'' paper tape for a drum storage -device attached to a 20 bit germanium transistor computer with 2000 words -of memory, but that was many years ago. -.PP -Peter Wemm <peter@FreeBSD.org> came up with the idea to store the -page-directory in mmap(2)'ed memory instead of in the heap. -This has proven to be a good move. -.PP -Lars Fredriksen <fredriks@mcs.com> found and identified a -fence-post bug in the code. diff --git a/share/doc/papers/malloc/implementation.ms b/share/doc/papers/malloc/implementation.ms deleted file mode 100644 index f9b547be18f5..000000000000 --- a/share/doc/papers/malloc/implementation.ms +++ /dev/null @@ -1,223 +0,0 @@ -.\" -.\" ---------------------------------------------------------------------------- -.\" "THE BEER-WARE LICENSE" (Revision 42): -.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you -.\" can do whatever you want with this stuff. If we meet some day, and you think -.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp -.\" ---------------------------------------------------------------------------- -.\" -.ds RH Implementation -.NH -Implementation -.PP -A new malloc(3) implementation was written to meet the goals, -and to the extent possible to address the shortcomings listed previously. -.PP -The source is 1218 lines of C code, and can be found in FreeBSD 2.2 -(and probably later versions as well) as src/lib/libc/stdlib/malloc.c. -.PP -The main data structure is the -.I page-directory -which contains a -.B void* -for each page we have control over. -The value can be one of: -.IP -.B MALLOC_NOT_MINE -Another part of the code may call brk(2) to get a piece of the cake. -Consequently, we cannot rely on the memory we get from the kernel -being one consecutive piece of memory, and therefore we need a way to -mark such pages as "untouchable". -.IP -.B MALLOC_FREE -This is a free page. -.IP -.B MALLOC_FIRST -This is the first page in a (multi-)page allocation. -.IP -.B MALLOC_FOLLOW -This is a subsequent page in a multi-page allocation. -.IP -.B -struct pginfo* -.R -A pointer to a structure describing a partitioned page. -.PP -In addition, there exists a linked list of small data structures that -describe the free space as runs of free pages. -.PP -Notice that these structures are not part of the free pages themselves, -but rather allocated with malloc so that the free pages themselves -are never referenced while they are free. -.PP -When a request for storage comes in, it will be treated as a ``page'' -allocation if it is bigger than half a page. -The free list will be searched and the first run of free pages that -can satisfy the request is used. The first page gets set to -.B MALLOC_FIRST -status. If more than that one page is needed, the rest of them get -.B MALLOC_FOLLOW -status in the page-directory. -.PP -If there were no pages on the free list, brk(2) will be called, and -the pages will get added to the page-directory with status -.B MALLOC_FREE -and the search restarts. -.PP -Freeing a number of pages is done by changing their state in the -page directory to MALLOC_FREE, and then traversing the free-pages list to -find the right place for this run of pages, possibly collapsing -with the two neighboring runs into one run and, if possible, -releasing some memory back to the kernel by calling brk(2). -.PP -If the request is less than or equal to half of a page, its size will be -rounded up to the nearest power of two before being processed -and if the request is less than some minimum size, it is rounded up to -that size. -.PP -These sub-page allocations are served from pages which are split up -into some number of equal size chunks. -For each of these pages a -.B -struct pginfo -.R -describes the size of the chunks on this page, how many there are, -how many are free and so on. -The description consist of a bitmap of used chunks, and various counters -and numbers used to keep track of the stuff in the page. -.PP -For each size of sub-page allocation, the pginfo structures for the -pages that have free chunks in them form a list. -The heads of these lists are stored in predetermined slots at -the beginning of the page directory to make access fast. -.PP -To allocate a chunk of some size, the head of the list for the -corresponding size is examined, and a free chunk found. The number -of free chunks on that page is decreased by one and, if zero, the -pginfo structure is unlinked from the list. -.PP -To free a chunk, the page is derived from the pointer, the page table -for that page contains a pointer to the pginfo structure, where the -free bit is set for the chunk, the number of free chunks increased by -one, and if equal to one, the pginfo structure is linked into the -proper place on the list for this size of chunks. -If the count increases to match the number of chunks on the page, the -pginfo structure is unlinked from the list and free(3)'ed and the -actual page itself is free(3)'ed too. -.PP -To be 100% correct performance-wise these lists should be ordered -according to the recent number of accesses to that page. This -information is not available and it would essentially mean a reordering -of the list on every memory reference to keep it up-to-date. -Instead they are ordered according to the address of the pages. -Interestingly enough, in practice this comes out to almost the same -thing performance-wise. -.PP -It's not that surprising after all, it's the difference between -following the crowd or actively directing where it can go, in both -ways you can end up in the middle of it all. -.PP -The side effect of this compromise is that it also uses less storage, -and the list never has to be reordered, all the ordering happens when -pages are added or deleted. -.PP -It is an interesting twist to the implementation that the -.B -struct pginfo -.R -is allocated with malloc. -That is, "as with malloc" to be painfully correct. -The code knows the special case where the first (couple) of allocations on -the page is actually the pginfo structure and deals with it accordingly. -This avoids some silly "chicken and egg" issues. -.ds RH Bells and whistles. -.NH -Bells and whistles. -.PP -brk(2) is actually not a very fast system call when you ask for storage. -This is mainly because of the need by the kernel to zero the pages before -handing them over, so therefore this implementation does not release -heap pages until there is a large chunk to release back to the kernel. -Chances are pretty good that we will need it again pretty soon anyway. -Since these pages are not accessed at all, they will soon be paged out -and don't affect anything but swap-space usage. -.PP -The page directory is actually kept in a mmap(2)'ed piece of -anonymous memory. This avoids some rather silly cases that -would otherwise have to be handled when the page directory -has to be extended. -.PP -One particularly nice feature is that all pointers passed to free(3) -and realloc(3) can be checked conclusively for validity: -First the pointer is masked to find the page. The page directory -is then examined, it must contain either MALLOC_FIRST, in which -case the pointer must point exactly at the page, or it can contain -a struct pginfo*, in which case the pointer must point to one of -the chunks described by that structure. -Warnings will be printed on -.B stderr -and nothing will be done with -the pointer if it is found to be invalid. -.PP -An environment variable -.B MALLOC_OPTIONS -allows the user some control over the behavior of malloc. -Some of the more interesting options are: -.IP -.B Abort -If malloc fails to allocate storage, core-dump the process with -a message rather than expect it handle this correctly. -It's amazing how few programs actually handle this condition correctly, -and consequently the havoc they can create is the more creative or -destructive. -.IP -.B Dump -Writes malloc statistics to a file called ``malloc.out'' prior -to process termination. -.IP -.B Hint -Pass a hint to the kernel about pages we no longer need through the -madvise(2) system call. This can help performance on machines that -page heavily by eliminating unnecessary page-ins and page-outs of -unused data. -.IP -.B Realloc -Always do a free and malloc when realloc(3) is called. -For programs doing garbage collection using realloc(3), this makes the -heap collapse faster since malloc will reallocate from the -lowest available address. -The default -is to leave things alone if the size of the allocation is still in -the same size-class. -.IP -.B Junk -will explicitly fill the allocated area with a particular value -to try to detect if programs rely on it being zero. -.IP -.B Zero -will explicitly zero out the allocated chunk of memory, while any -space after the allocation in the chunk will be filled with the -junk value to try to catch out of the chunk references. -.ds RH The road not taken. -.NH -The road not yet taken. -.PP -A couple of avenues were explored that could be interesting in some -set of circumstances. -.PP -Using mmap(2) instead of brk(2) was actually slower, since brk(2) -knows a lot of the things that mmap has to find out first. -.PP -In general there is little room for further improvement of the -time-overhead of the malloc, further improvements will have to -be in the area of improving paging behavior. -.PP -It is still under consideration to add a feature such that -if realloc is called with two zero arguments, the internal -allocations will be reallocated to perform a garbage collect. -This could be used in certain types of programs to collapse -the memory use, but so far it doesn't seem to be worth the effort. -.PP -Malloc/Free can be a significant point of contention in multi-threaded -programs. Low-grain locking of the data-structures inside the -implementation should be implemented to avoid excessive spin-waiting. diff --git a/share/doc/papers/malloc/intro.ms b/share/doc/papers/malloc/intro.ms deleted file mode 100644 index 59064ee166f1..000000000000 --- a/share/doc/papers/malloc/intro.ms +++ /dev/null @@ -1,72 +0,0 @@ -.\" -.\" ---------------------------------------------------------------------------- -.\" "THE BEER-WARE LICENSE" (Revision 42): -.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you -.\" can do whatever you want with this stuff. If we meet some day, and you think -.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp -.\" ---------------------------------------------------------------------------- -.\" -.ds RH Introduction -.NH -Introduction -.PP -Most programs need to allocate storage dynamically in addition -to whatever static storage the compiler reserved at compile-time. -To C programmers this fact is rather obvious, but for many years -this was not an accepted and recognized fact, and many languages -still used today don't support this notion adequately. -.PP -The classic UNIX kernel provides two very simple and powerful -mechanisms for obtaining dynamic storage, the execution stack -and the heap. -The stack is usually put at the far upper end of the address-space, -from where it grows down as far as needed, though this may depend on -the CPU design. -The heap starts at the end of the -.B bss -segment and grows upwards as needed. -.PP -There isn't really a kernel-interface to the stack as such. -The kernel will allocate some amount of memory for it, -not even telling the process the exact size. -If the process needs more space than that, it will simply try to access -it, hoping that the kernel will detect that an access has been -attempted outside the allocated memory, and try to extend it. -If the kernel fails to extend the stack, this could be because of lack -of resources or permissions or because it may just be impossible -to do in the first place, the process will usually be shot down by the -kernel. -.PP -In the C language, there exists a little used interface to the stack, -.B alloca(3) , -which will explicitly allocate space on the stack. -This is not an interface to the kernel, but merely an adjustment -done to the stack-pointer such that space will be available and -unharmed by any subroutine calls yet to be made while the context -of the current subroutine is intact. -.PP -Due to the nature of normal use of the stack, there is no corresponding -"free" operator, but instead the space is returned when the current -function returns to its caller and the stack frame is dismantled. -This is the cause of much grief, and probably the single most important -reason that alloca(3) is not, and should not be, used widely. -.PP -The heap on the other hand has an explicit kernel-interface in the -system call -.B brk(2) . -The argument to brk(2) is a pointer to where the process wants the -heap to end. -There is also an interface called -.B sbrk(2) -taking an increment to the current end of the heap, but this is merely a -.B libc -front for brk(2). -.PP -In addition to these two memory resources, modern virtual memory kernels -provide the mmap(2)/munmap(2) interface which allows almost complete -control over any bit of virtual memory in the process address space. -.PP -Because of the generality of the mmap(2) interface and the way the -data structures representing the regions are laid out, sbrk(2) is actually -faster in use than the equivalent mmap(2) call, simply because -mmap(2) has to search for information that is implicit in the sbrk(2) call. diff --git a/share/doc/papers/malloc/kernel.ms b/share/doc/papers/malloc/kernel.ms deleted file mode 100644 index 3672065ddef4..000000000000 --- a/share/doc/papers/malloc/kernel.ms +++ /dev/null @@ -1,54 +0,0 @@ -.\" -.\" ---------------------------------------------------------------------------- -.\" "THE BEER-WARE LICENSE" (Revision 42): -.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you -.\" can do whatever you want with this stuff. If we meet some day, and you think -.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp -.\" ---------------------------------------------------------------------------- -.\" -.ds RH The kernel and memory -.NH -The kernel and memory -.PP -Brk(2) isn't a particularly convenient interface, -it was probably made more to fit the memory model of the -hardware being used, than to fill the needs of the programmers. -.PP -Before paged and/or virtual memory systems became -common, the most popular memory management facility used for -UNIX was segments. -This was also very often the only vehicle for imposing protection on -various parts of memory. -Depending on the hardware, segments can be anything, and consequently -how the kernels exploited them varied a lot from UNIX to UNIX and from -machine to machine. -.PP -Typically a process would have one segment for the text section, one -for the data and bss section combined and one for the stack. -On some systems the text shared a segment with the data and bss, and was -consequently just as writable as them. -.PP -In this setup all the brk(2) system call has to do is to find the -right amount of free storage, possibly moving things around in physical -memory, maybe even swapping out a segment or two to make space, -and change the upper limit on the data segment according to the address given. -.PP -In a more modern page based virtual memory implementation this is still -pretty much the situation, except that the granularity is now pages: -The kernel finds the right number of free pages, possibly paging some -pages out to free them up, and then plugs them into the page-table of -the process. -.PP -As such the difference is very small, the real difference is that in -the old world of swapping, either the entire process was in primary -storage or it wouldn't be selected to be run. In a modern VM kernel, -a process might only have a subset of its pages in primary memory, -the rest will be paged in, if and when the process tries to access them. -.PP -Only very few programs deal with the brk(2) interface directly. -The few that do usually have their own memory management facilities. -LISP or FORTH interpreters are good examples. -Most other programs use the -.B malloc(3) -interface instead, and leave it to the malloc implementation to -use brk(2) to get storage allocated from the kernel. diff --git a/share/doc/papers/malloc/malloc.ms b/share/doc/papers/malloc/malloc.ms deleted file mode 100644 index 79e5173226b2..000000000000 --- a/share/doc/papers/malloc/malloc.ms +++ /dev/null @@ -1,70 +0,0 @@ -.\" -.\" ---------------------------------------------------------------------------- -.\" "THE BEER-WARE LICENSE" (Revision 42): -.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you -.\" can do whatever you want with this stuff. If we meet some day, and you think -.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp -.\" ---------------------------------------------------------------------------- -.\" -.ds RH Malloc and free -.NH -Malloc and free -.PP -The job of malloc(3) is to turn the rather simple -brk(2) facility into a service programs can -actually use without getting hurt. -.PP -The archetypical malloc(3) implementation keeps track of the memory between -the end of the bss section, as defined by the -.B _end -symbol, and the current brk(2) point using a linked list of chunks of memory. -Each item on the list has a status as either free or used, a pointer -to the next entry and in most cases to the previous as well, to speed -up inserts and deletes in the list. -.PP -When a malloc(3) request comes in, the list is traversed from the -front and if a free chunk big enough to hold the request is found, -it is returned, if the free chunk is bigger than the size requested, -a new free chunk is made from the excess and put back on the list. -.PP -When a chunk is -.B free(3) 'ed, -the chunk is found in the list, its status -is changed to free and if one or both of the surrounding chunks -are free, they are collapsed to one. -.PP -A third kind of request, -.B realloc(3) , -will resize -a chunk, trying to avoid copying the contents if possible. -It is seldom used, and has only had a significant impact on performance -in a few special situations. -The typical pattern of use is to malloc(3) a chunk of the maximum size -needed, read in the data and adjust the size of the chunk to match the -size of the data read using realloc(3). -.PP -For reasons of efficiency, the original implementation of malloc(3) -put the small structure used to contain the next and previous pointers -plus the state of the chunk right before the chunk itself. -.PP -As a matter of fact, the canonical malloc(3) implementation can be -studied in the ``Old testament'', chapter 8 verse 7 [Kernighan & Ritchie] -.PP -Various optimisations can be applied to the above basic algorithm: -.IP -If in freeing a chunk, we end up with the last chunk on the list being -free, we can return that to the kernel by calling brk(2) with the first -address of that chunk and then make the previous chunk the last on the -chain by terminating its ``next'' pointer. -.IP -A best-fit algorithm can be used instead of first-fit at an expense -of memory, because statistically fewer chances to brk(2) backwards will -present themselves. -.IP -Splitting the list in two, one for used and one for free chunks, to -speed the searching. -.IP -Putting free chunks on one of several free lists, depending on their size, -to speed allocation. -.IP -\&... diff --git a/share/doc/papers/malloc/performance.ms b/share/doc/papers/malloc/performance.ms deleted file mode 100644 index 49e9d6b75517..000000000000 --- a/share/doc/papers/malloc/performance.ms +++ /dev/null @@ -1,111 +0,0 @@ -.\" -.\" ---------------------------------------------------------------------------- -.\" "THE BEER-WARE LICENSE" (Revision 42): -.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you -.\" can do whatever you want with this stuff. If we meet some day, and you think -.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp -.\" ---------------------------------------------------------------------------- -.\" -.ds RH Performance -.NH -Performance -.PP -Performance for a malloc(3) implementation comes as two variables: -.IP -A: How much time does it use for searching and manipulating data structures. -We will refer to this as ``overhead time''. -.IP -B: How well does it manage the storage. -This rather vague metric we call ``quality of allocation''. -.PP -The overhead time is easy to measure, just do a lot of malloc/free calls -of various kinds and combination, and compare the results. -.PP -The quality of allocation is not quite as simple as that. -One measure of quality is the size of the process, that should obviously -be minimized. -Another measure is the execution time of the process. -This is not an obvious indicator of quality, but people will generally -agree that it should be minimized as well, and if malloc(3) can do -anything to do so, it should. -Explanation why it is still a good metric follows: -.PP -In a traditional segment/swap kernel, the desirable behavior of a process -is to keep the brk(2) as low as possible, thus minimizing the size of the -data/bss/heap segment, which in turn translates to a smaller process and -a smaller probability of the process being swapped out, qed: faster -execution time as an average. -.PP -In a paging environment this is not a bad choice for a default, but -a couple of details needs to be looked at much more carefully. -.PP -First of all, the size of a process becomes a more vague concept since -only the pages that are actually used need to be in primary storage -for execution to progress, and they only need to be there when used. -That implies that many more processes can fit in the same amount of -primary storage, since most processes have a high degree of locality -of reference and thus only need some fraction of their pages to actually -do their job. -.PP -From this it follows that the interesting size of the process, is some -subset of the total amount of virtual memory occupied by the process. -This number isn't a constant, it varies depending on the whereabouts -of the process, and it may indeed fluctuate wildly over the lifetime -of the process. -.PP -One of the names for this vague concept is ``current working set''. -It has been defined many different ways over the years, mostly to -satisfy and support claims in marketing or benchmark contexts. -.PP -For now we can simply say that it is the number of pages the process -needs in order to run at a sufficiently low paging rate in a congested -primary storage. -(If primary storage isn't congested, this is not really important -of course, but most systems would be better off using the pages for -disk-cache or similar functions, so from that perspective it will -always be congested.) -If the number of pages is too small, the process will wait for its -pages to be read from secondary storage much of the time, if it's too -big, the space could be used better for something else. -.PP -From the view of any single process, this number of pages is -"all of my pages", but from the point of view of the OS it should -be tuned to maximise the total throughput of all the processes on -the machine at the time. -This is usually done using various kinds of least-recently-used -replacement algorithms to select page candidates for replacement. -.PP -With this knowledge, can we decide what the performance goal is for -a modern malloc(3) ? -Well, it's almost as simple as it used to be: -.B -Minimize the number of pages accessed. -.R -.PP -This really is the core of it all. -If the number of accessed pages is smaller, then locality of reference is -higher, and all kinds of caches (which is essentially what the -primary storage is in a VM system) work better. -.PP -It's interesting to notice that the classical malloc fails on this one -because the information about free chunks is kept with the free -chunks themselves. In some of the benchmarks this came out as all the -pages being paged in every time a malloc call was made, because malloc -had to traverse the free list to find a suitable chunk for the allocation. -If memory is not in use, then you shouldn't access it. -.PP -The secondary goal is more evident: -.B -Try to work in pages. -.R -.PP -That makes it easier for the kernel, and wastes less virtual memory. -Most modern implementations do this when they interact with the -kernel, but few try to avoid objects spanning pages. -.PP -If an object's size -is less than or equal to a page, there is no reason for it to span two pages. -Having objects span pages means that two pages must be -paged in, if that object is accessed. -.PP -With this analysis in the luggage, we can start coding. diff --git a/share/doc/papers/malloc/problems.ms b/share/doc/papers/malloc/problems.ms deleted file mode 100644 index fa27effce999..000000000000 --- a/share/doc/papers/malloc/problems.ms +++ /dev/null @@ -1,52 +0,0 @@ -.\" -.\" ---------------------------------------------------------------------------- -.\" "THE BEER-WARE LICENSE" (Revision 42): -.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you -.\" can do whatever you want with this stuff. If we meet some day, and you think -.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp -.\" ---------------------------------------------------------------------------- -.\" -.ds RH The problems -.NH -The problems -.PP -Even though malloc(3) is a lot simpler to use -than the raw brk(2)/sbrk(2) interface, -or maybe exactly because -of that, -a lot of problems arise from its use. -.IP -Writing to memory outside the allocated chunk. -The most likely result being that the data structure used to hold -the links and flags about this chunk or the next one gets thrashed. -.IP -Freeing a pointer to memory not allocated by malloc. -This is often a pointer that points to an object on the stack or in the -data-section, in newer implementations of C it may even be in the text- -section where it is likely to be readonly. -Some malloc implementations detect this, some don't. -.IP -Freeing a modified pointer. This is a very common mistake, freeing -not the pointer malloc(3) returned, but rather some offset from it. -Some mallocs will handle this correctly if the offset is positive. -.IP -Freeing the same pointer more than once. -.IP -Accessing memory in a chunk after it has been free(3)'ed. -.PP -The handling of these problems have traditionally been weak. -A core-dump was the most common form for "handling", but in rare -cases one could experience the famous "malloc: corrupt arena." -message before the core-dump. -Even worse though, very often the program will just continue, -possibly giving wrong results. -.PP -An entirely different form of problem is that -the memory returned by malloc(3) can contain any value. -Unfortunately most kernels, correctly, zero out the storage they -provide with brk(2), and thus the storage malloc returns will be zeroed -in many cases as well, so programmers are not particular apt to notice -that their code depends on malloc'ed storage being zeroed. -.PP -With problems this big and error handling this weak, it is not -surprising that problems are hard and time consuming to find and fix. diff --git a/share/examples/Makefile b/share/examples/Makefile index 0a65b8c40d39..09bbf820e574 100644 --- a/share/examples/Makefile +++ b/share/examples/Makefile @@ -319,13 +319,13 @@ SE_SCSI_TARGET= \ SE_DIRS+= sound SE_SOUND= \ - sndstat_nv.c \ - midi.c - -SE_DIRS+= sound/oss -SE_SOUND_OSS= \ - README \ - audio.c + kqueue.c \ + midi.c \ + oss.h \ + poll.c \ + select.c \ + simple.c \ + sndstat_nv.c SE_DIRS+= sunrpc SE_SUNRPC= Makefile diff --git a/share/examples/bhyve/vmrun.sh b/share/examples/bhyve/vmrun.sh index 52935363023a..e0052e781dc0 100755 --- a/share/examples/bhyve/vmrun.sh +++ b/share/examples/bhyve/vmrun.sh @@ -268,8 +268,10 @@ fi if [ -z "$firmware" ]; then case ${platform} in amd64) - firmware="${efi_firmware}" - firmware_pkg="edk2-bhyve" + if [ ${efi_mode} -ne 0 ]; then + firmware="${efi_firmware}" + firmware_pkg="edk2-bhyve" + fi ;; arm64) firmware="${uboot_firmware}" diff --git a/share/examples/etc/README.examples b/share/examples/etc/README.examples index b0dc2b83ad66..810e5e28cb5c 100644 --- a/share/examples/etc/README.examples +++ b/share/examples/etc/README.examples @@ -19,7 +19,6 @@ devfs.conf - configuration file for devfs(8) dhclient.conf - configuration file for dhclient(8) disktab - disk description file (see disktab(5)) fbtab - configuration file for login(1) -ftpusers - user restriction file for ftpd(8) gettytab - defines port configuration for getty(8) group - group permissions file (see group(5)) hosts - see hosts(5) diff --git a/share/examples/mdoc/example.1 b/share/examples/mdoc/example.1 index 0bdabe95aa95..daffb8bc0422 100644 --- a/share/examples/mdoc/example.1 +++ b/share/examples/mdoc/example.1 @@ -1,28 +1,7 @@ .\" -.\" SPDX-License-Identifier: BSD-2-Clause -.\" .\" Copyright (c) [year] [your name] .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-License-Identifier: BSD-2-Clause .\" .\" Note: The date here should be updated whenever a non-trivial .\" change is made to the manual page. diff --git a/share/examples/mdoc/example.3 b/share/examples/mdoc/example.3 index c4e85062cad1..22c398e0491c 100644 --- a/share/examples/mdoc/example.3 +++ b/share/examples/mdoc/example.3 @@ -1,28 +1,7 @@ .\" -.\" SPDX-License-Identifier: BSD-2-Clause -.\" .\" Copyright (c) [year] [your name] .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-License-Identifier: BSD-2-Clause .\" .\" Note: The date here should be updated whenever a non-trivial .\" change is made to the manual page. diff --git a/share/examples/mdoc/example.4 b/share/examples/mdoc/example.4 index 47ae5456b79a..a51d9ca9262b 100644 --- a/share/examples/mdoc/example.4 +++ b/share/examples/mdoc/example.4 @@ -1,28 +1,7 @@ .\" -.\" SPDX-License-Identifier: BSD-2-Clause -.\" .\" Copyright (c) [year] [your name] .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-License-Identifier: BSD-2-Clause .\" .\" Note: The date here should be updated whenever a non-trivial .\" change is made to the manual page. @@ -47,6 +26,9 @@ module at boot time, place the following line in .Bd -literal -offset indent example_load="YES" .Ed +.Sh DEPRECATION NOTICE +This driver is scheduled for removal prior to the release of +.Fx 17.0 . .Sh DESCRIPTION This is an example device driver manual page for the .Nm diff --git a/share/examples/mdoc/example.9 b/share/examples/mdoc/example.9 index 1dd24a99fd42..f105f7465f2c 100644 --- a/share/examples/mdoc/example.9 +++ b/share/examples/mdoc/example.9 @@ -1,28 +1,7 @@ .\" -.\" SPDX-License-Identifier: BSD-2-Clause -.\" .\" Copyright (c) [year] [your name] .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-License-Identifier: BSD-2-Clause .\" .\" Note: The date here should be updated whenever a non-trivial .\" change is made to the manual page. diff --git a/share/examples/sound/kqueue.c b/share/examples/sound/kqueue.c new file mode 100644 index 000000000000..9117d7a389bb --- /dev/null +++ b/share/examples/sound/kqueue.c @@ -0,0 +1,79 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2025 Goran Mekić + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/event.h> + +#include "oss.h" + +int +main(int argc, char *argv[]) +{ + struct config config = { + .device = "/dev/dsp", + .mode = O_RDWR, + .format = AFMT_S32_NE, + .sample_rate = 48000, + }; + struct kevent event = {}; + int rc, bytes, kq; + + oss_init(&config); + bytes = config.buffer_info.bytes; + + if ((kq = kqueue()) < 0) + err(1, "Failed to allocate kqueue"); + EV_SET(&event, config.fd, EVFILT_WRITE, EV_ADD | EV_CLEAR, 0, 0, 0); + if (kevent(kq, &event, 1, NULL, 0, NULL) < 0) + err(1, "Failed to register kevent"); + for (;;) { + if (kevent(kq, NULL, 0, &event, 1, NULL) < 0) { + warn("Event error"); + break; + } + if (event.flags & EV_ERROR) { + warn("Event error: %s", strerror(event.data)); + break; + } + if ((rc = read(config.fd, config.buf, bytes)) < bytes) { + warn("Requested %d bytes, but read %d!\n", bytes, rc); + break; + } + if ((rc = write(config.fd, config.buf, bytes)) < bytes) { + warn("Requested %d bytes, but wrote %d!\n", bytes, rc); + break; + } + } + EV_SET(&event, config.fd, EVFILT_WRITE, EV_DELETE, 0, 0, 0); + if (kevent(kq, &event, 1, NULL, 0, NULL) < 0) + err(1, "Failed to unregister kevent"); + close(kq); + + free(config.buf); + close(config.fd); + + return (0); +} diff --git a/share/examples/sound/oss.h b/share/examples/sound/oss.h new file mode 100644 index 000000000000..e1ba4165810f --- /dev/null +++ b/share/examples/sound/oss.h @@ -0,0 +1,237 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2025 Goran Mekić + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/mman.h> +#include <sys/soundcard.h> + +#include <err.h> +#include <fcntl.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +/* + * Minimal configuration for OSS. For real world applications, this structure + * will probably contain many more fields + */ +struct config { + char *device; + int mode; + int fd; + int format; + int sample_count; + int sample_rate; + int sample_size; + int chsamples; + int mmap; + void *buf; + oss_audioinfo audio_info; + audio_buf_info buffer_info; +}; + +/* + * The buffer size used by OSS is (2 ^ exponent) * number_of_fragments. + * Exponent values range between 4 and 16, so this function looks for the + * smallest exponent which can fit a buffer of size "x". The fragments + * determine in how many chunks the buffer will be sliced into, hence if the + * exponent is 4, and number of fragments is 2, the requested size will be 2^4 + * * 2 = 32. Please note that the buffer size is in bytes, not samples. For + * example, a 24-bit sample will be represented with 3 bytes. If you're porting + * an audio application from Linux, you should be aware that 24-bit samples on + * it are represented with 4 bytes (usually int). The idea of a total buffer + * size that holds number of fragments is to allow application to be + * number_of_fragments - 1 late. That's called jitter tolerance. + * + * Official OSS development howto: + * http://manuals.opensound.com/developer/DSP.html + */ +static inline int +size2exp(int x) +{ + int exp = 0; + + while ((1 << exp) < x) + exp++; + + return (exp); +} + +static void +oss_init(struct config *config) +{ + unsigned long request = SNDCTL_DSP_GETOSPACE; + int tmp = 0, prot = 0; + + if ((config->fd = open(config->device, config->mode)) < 0) + err(1, "Error opening the device %s", config->device); + + /* Get device information */ + if (ioctl(config->fd, SNDCTL_ENGINEINFO, &config->audio_info) < 0) + err(1, "Unable to get device info"); + + /* Get device capabilities */ + if (ioctl(config->fd, SNDCTL_DSP_GETCAPS, &config->audio_info.caps) < 0) + err(1, "Unable to get capabilities"); + + /* Check if device supports triggering */ + if (!(config->audio_info.caps & PCM_CAP_TRIGGER)) + errx(1, "Device doesn't support triggering!\n"); + + /* Handle memory mapped mode */ + if (config->mmap) { + if (!(config->audio_info.caps & PCM_CAP_MMAP)) + errx(1, "Device doesn't support mmap mode!\n"); + tmp = 0; + if (ioctl(config->fd, SNDCTL_DSP_COOKEDMODE, &tmp) < 0) + err(1, "Unable to set cooked mode"); + } + + /* Set sample format */ + if (ioctl(config->fd, SNDCTL_DSP_SETFMT, &config->format) < 0) + err(1, "Unable to set sample format"); + + /* Set sample channels */ + if (ioctl(config->fd, SNDCTL_DSP_CHANNELS, &config->audio_info.max_channels) < 0) + err(1, "Unable to set channels"); + + /* Set sample rate */ + if (ioctl(config->fd, SNDCTL_DSP_SPEED, &config->sample_rate) < 0) + err(1, "Unable to set sample rate"); + + /* Calculate sample size */ + switch (config->format) { + case AFMT_S8: + case AFMT_U8: + config->sample_size = 1; + break; + case AFMT_S16_BE: + case AFMT_S16_LE: + case AFMT_U16_BE: + case AFMT_U16_LE: + config->sample_size = 2; + break; + case AFMT_S24_BE: + case AFMT_S24_LE: + case AFMT_U24_BE: + case AFMT_U24_LE: + config->sample_size = 3; + break; + case AFMT_S32_BE: + case AFMT_S32_LE: + case AFMT_U32_BE: + case AFMT_U32_LE: + case AFMT_F32_BE: + case AFMT_F32_LE: + config->sample_size = 4; + break; + default: + errx(1, "Invalid audio format %d", config->format); + break; + } + + /* + * Set fragment and sample size. This part is optional as OSS has + * default values. From the kernel's perspective, there are few things + * OSS developers should be aware of: + * + * - For each sound(4)-created channel, there is a software-facing + * buffer, and a hardware-facing one. + * - The sizes of the buffers can be listed in the console with "sndctl + * swbuf hwbuf". + * - OSS ioctls only concern software-facing buffer fragments, not + * hardware. + * + * For USB sound cards, the block size is set according to the + * hw.usb.uaudio.buffer_ms sysctl, meaning 2ms at 48kHz gives 0.002 * + * 48000 = 96 samples per block. Block size should be set as multiple + * of 96, in this case. The OSS driver insists on reading/writing a + * certain number of samples at a time, one fragment full of samples. + * It is bound to do so at a fixed time frame, to avoid under- and + * overruns during communication with the hardware. + */ + config->buffer_info.fragments = 2; + tmp = size2exp(config->sample_size * config->audio_info.max_channels); + tmp = ((config->buffer_info.fragments) << 16) | tmp; + if (ioctl(config->fd, SNDCTL_DSP_SETFRAGMENT, &tmp) < 0) + err(1, "Unable to set fragment size"); + + /* Get buffer info */ + if ((config->mode & O_ACCMODE) == O_RDONLY) + request = SNDCTL_DSP_GETISPACE; + if (ioctl(config->fd, request, &config->buffer_info) < 0) + err(1, "Unable to get buffer info"); + if (config->buffer_info.fragments < 1) + config->buffer_info.fragments = config->buffer_info.fragstotal; + if (config->buffer_info.bytes < 1) + config->buffer_info.bytes = config->buffer_info.fragstotal * config->buffer_info.fragsize; + if (config->buffer_info.bytes < 1) { + errx(1, "OSS buffer error: buffer size can not be %d\n", + config->buffer_info.bytes); + } + config->sample_count = config->buffer_info.bytes / config->sample_size; + config->chsamples = config->sample_count / config->audio_info.max_channels; + + printf("bytes: %d, fragments: %d, fragsize: %d, fragstotal: %d, " + "samples: %d\n", + config->buffer_info.bytes, config->buffer_info.fragments, + config->buffer_info.fragsize, config->buffer_info.fragstotal, + config->sample_count); + + /* Set trigger direction and mmap protection */ + switch (config->mode & O_ACCMODE) { + case O_RDONLY: + tmp = PCM_ENABLE_INPUT; + prot = PROT_READ; + break; + case O_WRONLY: + tmp = PCM_ENABLE_OUTPUT; + prot = PROT_WRITE; + break; + case O_RDWR: + tmp = PCM_ENABLE_INPUT | PCM_ENABLE_OUTPUT; + prot = PROT_READ | PROT_WRITE; + break; + default: + errx(1, "Invalid mode %d", config->mode); + break; + } + + /* Map or allocate the buffer */ + if (config->mmap) { + config->buf = mmap(NULL, config->buffer_info.bytes, prot, MAP_SHARED, config->fd, 0); + if (config->buf == MAP_FAILED) + err(1, "Memory map failed"); + } else { + if ((config->buf = malloc(config->buffer_info.bytes)) == NULL) + err(1, "Allocating buffer failed"); + } + + /* Set the trigger */ + if (ioctl(config->fd, SNDCTL_DSP_SETTRIGGER, &tmp) < 0) + err(1, "Failed to set trigger"); +} diff --git a/share/examples/sound/oss/README b/share/examples/sound/oss/README deleted file mode 100644 index 0188a26348c8..000000000000 --- a/share/examples/sound/oss/README +++ /dev/null @@ -1,66 +0,0 @@ -Briefly summarised, a general audio application will: -- open(2) -- ioctl(2) -- read(2) -- write(2) -- close(2) - -In this example, read/write will be called in a loop for a duration of -record/playback. Usually, /dev/dsp is the device you want to open, but it can -be any OSS compatible device, even user space one created with virtual_oss. For -configuring sample rate, bit depth and all other configuring of the device -ioctl is used. As devices can support multiple sample rates and formats, what -specific application should do in case there's an error issuing ioctl, as not -all errors are fatal, is upon the developer to decide. As a general guideline -Official OSS development howto should be used. FreeBSD OSS and virtual_oss are -different to a small degree. - -For more advanced OSS and real-time applications, developers need to handle -buffers more carefully. The size of the buffer in OSS is selected using fragment -size size_selector and the buffer size is 2^size_selector for values between 4 -and 16. The formula on the official site is: - -int frag = (max_fragments << 16) | (size_selector); -ioctl(fd, SNDCTL_DSP_SETFRAGMENT, &frag); - -The max_fragments determines in how many fragments the buffer will be, hence if -the size_selector is 4, the requested size is 2^4 = 16 and for the -max_fragments of 2, the total buffer size will be - -(2 ^ size_selector) * max_fragments - -or in this case 32 bytes. Please note that size of buffer is in bytes not -samples. For example, 24bit sample will be represented with 3 bytes. If you're -porting audio app from Linux, you should be aware that 24 bit samples are -represented with 4 bytes (usually int). - -FreeBSD kernel will round up max_fragments and size of fragment/buffer, so the -last thing any OSS code should do is get info about buffer with audio_buf_info -and SNDCTL_DSP_GETOSPACE. That also means that not all values of max_fragments -are permitted. - -From kernel perspective, there are few points OSS developers should be aware of: -- There is a software facing buffer (bs) and a hardware driver buffer (b) -- The sizes can be seen with cat /dev/sndstat as [b:_/_/_] [bs:_/_/_] (needed: - sysctl hw.snd.verbose=2) -- OSS ioctl only concern software buffer fragments, not hardware - -For USB the block size is according to hw.usb.uaudio.buffer_ms sysctl, meaning -2ms at 48kHz gives 0.002 * 48000 = 96 samples per block, all multiples of this -work well. Block size for virtual_oss, if used, should be set accordingly. - -OSS driver insists on reading / writing a certain number of samples at a time, -one fragment full of samples. It is bound to do so in a fixed time frame, to -avoid under- and overruns in communication with the hardware. - -The idea of a total buffer size that holds max_fragments fragments is to give -some slack and allow application to be about max_fragments - 1 fragments late. -Let's call this the jitter tolerance. The jitter tolerance may be much less if -there is a slight mismatch between the period and the samples per fragment. - -Jitter tolerance gets better if we can make either the period or the samples -per fragment considerably smaller than the other. In our case that means we -divide the total buffer size into smaller fragments, keeping overall latency at -the same level. - -Official OSS development howto: http://manuals.opensound.com/developer/DSP.html diff --git a/share/examples/sound/oss/audio.c b/share/examples/sound/oss/audio.c deleted file mode 100644 index 4dd3c8b82575..000000000000 --- a/share/examples/sound/oss/audio.c +++ /dev/null @@ -1,310 +0,0 @@ -/* - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2021 Goran Mekić - * Copyright (c) 2024 The FreeBSD Foundation - * - * Portions of this software were developed by Christos Margiolis - * <christos@FreeBSD.org> under sponsorship from the FreeBSD Foundation. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/soundcard.h> - -#include <err.h> -#include <errno.h> -#include <fcntl.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -#ifndef SAMPLE_SIZE -#define SAMPLE_SIZE 16 -#endif - -/* Format can be unsigned, in which case replace S with U */ -#if SAMPLE_SIZE == 32 -typedef int32_t sample_t; -int format = AFMT_S32_NE; /* Signed 32bit native endian format */ -#elif SAMPLE_SIZE == 16 -typedef int16_t sample_t; -int format = AFMT_S16_NE; /* Signed 16bit native endian format */ -#elif SAMPLE_SIZE == 8 -typedef int8_t sample_t; -int format = AFMT_S8_NE; /* Signed 8bit native endian format */ -#else -#error Unsupported sample format! -typedef int32_t sample_t; -int format = AFMT_S32_NE; /* Not a real value, just silencing - * compiler errors */ -#endif - -/* - * Minimal configuration for OSS - * For real world applications, this structure will probably contain many - * more fields - */ -typedef struct config { - char *device; - int channels; - int fd; - int format; - int frag; - int sample_count; - int sample_rate; - int sample_size; - int chsamples; - int mmap; - oss_audioinfo audio_info; - audio_buf_info buffer_info; -} config_t; - -/* - * Error state is indicated by value=-1 in which case application exits with - * error - */ -static inline void -check_error(const int value, const char *message) -{ - if (value == -1) - err(1, "OSS error: %s\n", message); -} - - -/* Calculate frag by giving it minimal size of buffer */ -static inline int -size2frag(int x) -{ - int frag = 0; - - while ((1 << frag) < x) - ++frag; - - return (frag); -} - -/* - * Split input buffer into channels. Input buffer is in interleaved format - * which means if we have 2 channels (L and R), this is what the buffer of 8 - * samples would contain: L,R,L,R,L,R,L,R. The result are two channels - * containing: L,L,L,L and R,R,R,R. - */ -static void -oss_split(config_t *config, sample_t *input, sample_t *output) -{ - int channel, index, i; - - for (i = 0; i < config->sample_count; ++i) { - channel = i % config->channels; - index = i / config->channels; - output[channel * index] = input[i]; - } -} - -/* - * Convert channels into interleaved format and place it in output - * buffer - */ -static void -oss_merge(config_t *config, sample_t *input, sample_t *output) -{ - int channel, index; - - for (channel = 0; channel < config->channels; ++channel) { - for (index = 0; index < config->chsamples; ++index) { - output[index * config->channels + channel] = - input[channel * index]; - } - } -} - -static void -oss_init(config_t *config) -{ - int error, tmp, min_frag; - - /* Open the device for read and write */ - config->fd = open(config->device, O_RDWR); - check_error(config->fd, "open"); - - /* Get device information */ - config->audio_info.dev = -1; - error = ioctl(config->fd, SNDCTL_ENGINEINFO, &(config->audio_info)); - check_error(error, "SNDCTL_ENGINEINFO"); - printf("min_channels: %d\n", config->audio_info.min_channels); - printf("max_channels: %d\n", config->audio_info.max_channels); - printf("latency: %d\n", config->audio_info.latency); - printf("handle: %s\n", config->audio_info.handle); - if (config->audio_info.min_rate > config->sample_rate || - config->sample_rate > config->audio_info.max_rate) { - errx(1, "%s doesn't support chosen samplerate of %dHz!\n", - config->device, config->sample_rate); - } - if (config->channels < 1) - config->channels = config->audio_info.max_channels; - - /* - * If device is going to be used in mmap mode, disable all format - * conversions. Official OSS documentation states error code should not - * be checked. - * http://manuals.opensound.com/developer/mmap_test.c.html#LOC10 - */ - if (config->mmap) { - tmp = 0; - ioctl(config->fd, SNDCTL_DSP_COOKEDMODE, &tmp); - } - - /* - * Set number of channels. If number of channels is chosen to the value - * near the one wanted, save it in config - */ - tmp = config->channels; - error = ioctl(config->fd, SNDCTL_DSP_CHANNELS, &tmp); - check_error(error, "SNDCTL_DSP_CHANNELS"); - /* Or check if tmp is close enough? */ - if (tmp != config->channels) { - errx(1, "%s doesn't support chosen channel count of %d set " - "to %d!\n", config->device, config->channels, tmp); - } - config->channels = tmp; - - /* Set format, or bit size: 8, 16, 24 or 32 bit sample */ - tmp = config->format; - error = ioctl(config->fd, SNDCTL_DSP_SETFMT, &tmp); - check_error(error, "SNDCTL_DSP_SETFMT"); - if (tmp != config->format) { - errx(1, "%s doesn't support chosen sample format!\n", - config->device); - } - - /* Most common values for samplerate (in kHz): 44.1, 48, 88.2, 96 */ - tmp = config->sample_rate; - error = ioctl(config->fd, SNDCTL_DSP_SPEED, &tmp); - check_error(error, "SNDCTL_DSP_SPEED"); - - /* Get and check device capabilities */ - error = ioctl(config->fd, SNDCTL_DSP_GETCAPS, &(config->audio_info.caps)); - check_error(error, "SNDCTL_DSP_GETCAPS"); - if (!(config->audio_info.caps & PCM_CAP_DUPLEX)) - errx(1, "Device doesn't support full duplex!\n"); - - if (config->mmap) { - if (!(config->audio_info.caps & PCM_CAP_TRIGGER)) - errx(1, "Device doesn't support triggering!\n"); - if (!(config->audio_info.caps & PCM_CAP_MMAP)) - errx(1, "Device doesn't support mmap mode!\n"); - } - - /* - * If desired frag is smaller than minimum, based on number of channels - * and format (size in bits: 8, 16, 24, 32), set that as frag. Buffer - * size is 2^frag, but the real size of the buffer will be read when - * the configuration of the device is successful - */ - min_frag = size2frag(config->sample_size * config->channels); - - if (config->frag < min_frag) - config->frag = min_frag; - - /* - * Allocate buffer in fragments. Total buffer will be split in number - * of fragments (2 by default) - */ - if (config->buffer_info.fragments < 0) - config->buffer_info.fragments = 2; - tmp = ((config->buffer_info.fragments) << 16) | config->frag; - error = ioctl(config->fd, SNDCTL_DSP_SETFRAGMENT, &tmp); - check_error(error, "SNDCTL_DSP_SETFRAGMENT"); - - /* When all is set and ready to go, get the size of buffer */ - error = ioctl(config->fd, SNDCTL_DSP_GETOSPACE, &(config->buffer_info)); - check_error(error, "SNDCTL_DSP_GETOSPACE"); - if (config->buffer_info.bytes < 1) { - errx(1, "OSS buffer error: buffer size can not be %d\n", - config->buffer_info.bytes); - } - config->sample_count = config->buffer_info.bytes / config->sample_size; - config->chsamples = config->sample_count / config->channels; -} - -int -main(int argc, char *argv[]) -{ - int ret, bytes; - int8_t *ibuf, *obuf; - config_t config = { - .device = "/dev/dsp", - .channels = -1, - .format = format, - .frag = -1, - .sample_rate = 48000, - .sample_size = sizeof(sample_t), - .buffer_info.fragments = -1, - .mmap = 0, - }; - - /* Initialize device */ - oss_init(&config); - - /* - * Allocate input and output buffers so that their size match frag_size - */ - bytes = config.buffer_info.bytes; - ibuf = malloc(bytes); - obuf = malloc(bytes); - sample_t *channels = malloc(bytes); - - printf("bytes: %d, fragments: %d, fragsize: %d, fragstotal: %d, " - "samples: %d\n", - bytes, config.buffer_info.fragments, - config.buffer_info.fragsize, config.buffer_info.fragstotal, - config.sample_count); - - /* Minimal engine: read input and copy it to the output */ - for (;;) { - ret = read(config.fd, ibuf, bytes); - if (ret < bytes) { - fprintf(stderr, "Requested %d bytes, but read %d!\n", - bytes, ret); - break; - } - oss_split(&config, (sample_t *)ibuf, channels); - /* All processing will happen here */ - oss_merge(&config, channels, (sample_t *)obuf); - ret = write(config.fd, obuf, bytes); - if (ret < bytes) { - fprintf(stderr, "Requested %d bytes, but wrote %d!\n", - bytes, ret); - break; - } - } - - /* Cleanup */ - free(channels); - free(obuf); - free(ibuf); - close(config.fd); - - return (0); -} diff --git a/share/examples/sound/poll.c b/share/examples/sound/poll.c new file mode 100644 index 000000000000..53bdf572e991 --- /dev/null +++ b/share/examples/sound/poll.c @@ -0,0 +1,70 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2025 Goran Mekić + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/poll.h> + +#include "oss.h" + +int +main(int argc, char *argv[]) +{ + struct config config = { + .device = "/dev/dsp", + .mode = O_RDWR, + .format = AFMT_S32_NE, + .sample_rate = 48000, + }; + struct pollfd pfds[1]; + int rc, bytes; + + oss_init(&config); + bytes = config.buffer_info.bytes; + + for (;;) { + pfds[0].fd = config.fd; + pfds[0].events = POLLOUT; + if (poll(pfds, sizeof(pfds) / sizeof(struct pollfd), -1) < 0) + err(1, "poll"); + if (pfds[0].revents != 0) { + if ((rc = read(config.fd, config.buf, bytes)) < bytes) { + warn("Requested %d bytes, but read %d!\n", + bytes, rc); + break; + } + if ((rc = write(config.fd, config.buf, bytes)) < bytes) { + err(1, "Requested %d bytes, but wrote %d!\n", + bytes, rc); + break; + } + } + } + + free(config.buf); + close(config.fd); + + return (0); +} diff --git a/share/examples/sound/select.c b/share/examples/sound/select.c new file mode 100644 index 000000000000..762d0b2b86a7 --- /dev/null +++ b/share/examples/sound/select.c @@ -0,0 +1,70 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2025 Goran Mekić + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/poll.h> + +#include "oss.h" + +int +main(int argc, char *argv[]) +{ + struct config config = { + .device = "/dev/dsp", + .mode = O_RDWR, + .format = AFMT_S32_NE, + .sample_rate = 48000, + }; + fd_set fds; + int rc, bytes; + + oss_init(&config); + bytes = config.buffer_info.bytes; + + for (;;) { + FD_ZERO(&fds); + FD_SET(config.fd, &fds); + if (select(config.fd + 1, &fds, NULL, NULL, NULL) < 0) + err(1, "select"); + if (FD_ISSET(config.fd, &fds)) { + if ((rc = read(config.fd, config.buf, bytes)) < bytes) { + warn("Requested %d bytes, but read %d!\n", + bytes, rc); + break; + } + if ((rc = write(config.fd, config.buf, bytes)) < bytes) { + warn("Requested %d bytes, but wrote %d!\n", + bytes, rc); + break; + } + } + } + + free(config.buf); + close(config.fd); + + return (0); +} diff --git a/share/examples/sound/simple.c b/share/examples/sound/simple.c new file mode 100644 index 000000000000..e458841f596a --- /dev/null +++ b/share/examples/sound/simple.c @@ -0,0 +1,147 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2024 The FreeBSD Foundation + * Copyright (c) 2025 Goran Mekić + * + * Portions of this software were developed by Christos Margiolis + * <christos@FreeBSD.org> under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include "oss.h" + +/* + * Split input buffer into channels. The input buffer is in interleaved format, + * which means if we have 2 channels (L and R), this is what the buffer of 8 + * samples would contain: L,R,L,R,L,R,L,R. The result of this function is a + * buffer containing: L,L,L,L,R,R,R,R. + */ +static void +to_channels(struct config *config, void *output) +{ + uint8_t *in = config->buf; + uint8_t *out = output; + int i, channel, index, offset, byte; + + /* Iterate over bytes in the input buffer */ + for (byte = 0; byte < config->buffer_info.bytes; + byte += config->sample_size) { + /* + * Get index of a sample in the input buffer measured in + * samples + */ + i = byte / config->sample_size; + + /* Get which channel is being processed */ + channel = i % config->audio_info.max_channels; + + /* Get offset of the sample inside a single channel */ + offset = i / config->audio_info.max_channels; + + /* Get index of a sample in the output buffer */ + index = (channel * config->chsamples + offset) * + config->sample_size; + + /* Copy singe sample from input to output */ + memcpy(out+index, in+byte, config->sample_size); + } +} + +/* + * Convert channels into interleaved format and put into output buffer + */ +static void +to_interleaved(struct config *config, void *input) +{ + uint8_t *out = config->buf; + uint8_t *in = input; + int i, index, offset, channel, byte; + + /* Iterate over bytes in the input buffer */ + for (byte = 0; byte < config->buffer_info.bytes; + byte += config->sample_size) { + /* + * Get index of a sample in the input buffer measured in + * samples + */ + index = byte / config->sample_size; + + /* Get which channel is being processed */ + channel = index / config->chsamples; + + /* Get offset of the sample inside a single channel */ + offset = index % config->chsamples; + + /* Get index of a sample in the output buffer */ + i = (config->audio_info.max_channels * offset + channel) * + config->sample_size; + + /* Copy singe sample from input to output */ + memcpy(out+i, in+byte, config->sample_size); + } +} + +int +main(int argc, char *argv[]) +{ + struct config config = { + .device = "/dev/dsp", + .mode = O_RDWR, + .format = AFMT_S32_NE, + .sample_rate = 48000, + }; + int32_t *channels; + int rc, bytes; + + oss_init(&config); + bytes = config.buffer_info.bytes; + channels = malloc(bytes); + + for (;;) { + if ((rc = read(config.fd, config.buf, bytes)) < bytes) { + warn("Requested %d bytes, but read %d!\n", bytes, rc); + break; + } + /* + * Strictly speaking, we could omit "channels" and operate only + * using config->buf, but this example tries to show the real + * world application usage. The problem is that the buffer is + * in interleaved format, and if you'd like to do any + * processing and/or mixing, it is easier to do that if samples + * are grouped per channel. + */ + to_channels(&config, channels); + to_interleaved(&config, channels); + if ((rc = write(config.fd, config.buf, bytes)) < bytes) { + warn("Requested %d bytes, but wrote %d!\n", bytes, rc); + break; + } + } + + free(channels); + free(config.buf); + close(config.fd); + + return (0); +} diff --git a/share/keys/Makefile b/share/keys/Makefile index f4bab152d8cb..98e17356e75a 100644 --- a/share/keys/Makefile +++ b/share/keys/Makefile @@ -1,3 +1,3 @@ -SUBDIR= pkg +SUBDIR= pkg pkgbase-15 .include <bsd.subdir.mk> diff --git a/share/keys/pkgbase-15/Makefile b/share/keys/pkgbase-15/Makefile new file mode 100644 index 000000000000..665bcf389da1 --- /dev/null +++ b/share/keys/pkgbase-15/Makefile @@ -0,0 +1,3 @@ +SUBDIR= trusted + +.include <bsd.subdir.mk> diff --git a/share/keys/pkgbase-15/trusted/Makefile b/share/keys/pkgbase-15/trusted/Makefile new file mode 100644 index 000000000000..32db72ae368a --- /dev/null +++ b/share/keys/pkgbase-15/trusted/Makefile @@ -0,0 +1,9 @@ +PACKAGE= pkg-bootstrap + +FILES= awskms-15 \ + backup-signing-15 + +FILESDIR= ${SHAREDIR}/keys/pkgbase-15/trusted +FILESMODE= 644 + +.include <bsd.prog.mk> diff --git a/share/keys/pkgbase-15/trusted/awskms-15 b/share/keys/pkgbase-15/trusted/awskms-15 new file mode 100644 index 000000000000..e951b6f9e2d5 --- /dev/null +++ b/share/keys/pkgbase-15/trusted/awskms-15 @@ -0,0 +1,2 @@ +function: "sha256" +fingerprint: "1d7b45d20fa8d6ed26f9b4a13ac81a6b5df860b9fe644d07b87e92298ba72595" diff --git a/share/keys/pkgbase-15/trusted/backup-signing-15 b/share/keys/pkgbase-15/trusted/backup-signing-15 new file mode 100644 index 000000000000..a147d6788cf2 --- /dev/null +++ b/share/keys/pkgbase-15/trusted/backup-signing-15 @@ -0,0 +1,2 @@ +function: "sha256" +fingerprint: "56a77bdcb6c3cf7984729c6138bd5617c24aa0d466b3b604c96205b2c5629f3c" diff --git a/share/man/man3/Makefile b/share/man/man3/Makefile index 3511acb254e1..3fd819814f77 100644 --- a/share/man/man3/Makefile +++ b/share/man/man3/Makefile @@ -1,6 +1,7 @@ .include <src.opts.mk> PACKAGE= clibs +MANSUBPACKAGE= -dev MAN= alloca.3 \ arb.3 \ @@ -30,11 +31,13 @@ MAN= alloca.3 \ snl.3 \ stats.3 \ stdarg.3 \ + stdbit.3 \ stdckdint.3 \ sysexits.3 \ tgmath.3 \ timeradd.3 \ - tree.3 + tree.3 \ + unreachable.3 MLINKS= arb.3 ARB8_ENTRY.3 \ arb.3 ARB8_HEAD.3 \ @@ -202,6 +205,7 @@ MLINKS+= Q_SIGNSHFT.3 Q_SSIGN.3 \ MLINKS+= queue.3 LIST_CLASS_ENTRY.3 \ queue.3 LIST_CLASS_HEAD.3 \ queue.3 LIST_EMPTY.3 \ + queue.3 LIST_EMPTY_ATOMIC.3 \ queue.3 LIST_ENTRY.3 \ queue.3 LIST_FIRST.3 \ queue.3 LIST_FOREACH.3 \ @@ -223,6 +227,7 @@ MLINKS+= queue.3 LIST_CLASS_ENTRY.3 \ queue.3 SLIST_CLASS_ENTRY.3 \ queue.3 SLIST_CLASS_HEAD.3 \ queue.3 SLIST_EMPTY.3 \ + queue.3 SLIST_EMPTY_ATOMIC.3 \ queue.3 SLIST_ENTRY.3 \ queue.3 SLIST_FIRST.3 \ queue.3 SLIST_FOREACH.3 \ @@ -245,6 +250,7 @@ MLINKS+= queue.3 LIST_CLASS_ENTRY.3 \ queue.3 STAILQ_CLASS_HEAD.3 \ queue.3 STAILQ_CONCAT.3 \ queue.3 STAILQ_EMPTY.3 \ + queue.3 STAILQ_EMPTY_ATOMIC.3 \ queue.3 STAILQ_ENTRY.3 \ queue.3 STAILQ_FIRST.3 \ queue.3 STAILQ_FOREACH.3 \ @@ -269,6 +275,7 @@ MLINKS+= queue.3 LIST_CLASS_ENTRY.3 \ queue.3 TAILQ_CLASS_HEAD.3 \ queue.3 TAILQ_CONCAT.3 \ queue.3 TAILQ_EMPTY.3 \ + queue.3 TAILQ_EMPTY_ATOMIC.3 \ queue.3 TAILQ_ENTRY.3 \ queue.3 TAILQ_FIRST.3 \ queue.3 TAILQ_FOREACH.3 \ diff --git a/share/man/man3/assert.3 b/share/man/man3/assert.3 index f219aa1d6743..cbaedb49010a 100644 --- a/share/man/man3/assert.3 +++ b/share/man/man3/assert.3 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd April 20, 2021 +.Dd November 27, 2025 .Dt ASSERT 3 .Os .Sh NAME @@ -118,7 +118,8 @@ constraint and includes the provided string literal: If none is provided, it only points at the constraint. .Sh SEE ALSO .Xr abort2 2 , -.Xr abort 3 +.Xr abort 3 , +.Xr unreachable 3 .Sh STANDARDS The .Fn assert diff --git a/share/man/man3/bitstring.3 b/share/man/man3/bitstring.3 index 07558bd41ec3..87ba9a24a1b5 100644 --- a/share/man/man3/bitstring.3 +++ b/share/man/man3/bitstring.3 @@ -461,6 +461,7 @@ make_lpr_available() .Ed .Sh SEE ALSO .Xr malloc 3 , +.Xr stdbit 3 , .Xr bitset 9 .Sh HISTORY The diff --git a/share/man/man3/intro.3 b/share/man/man3/intro.3 index 0cecdcab4069..952183d7dd2d 100644 --- a/share/man/man3/intro.3 +++ b/share/man/man3/intro.3 @@ -24,7 +24,7 @@ .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. -.Dd November 27, 2024 +.Dd November 10, 2025 .Dt INTRO 3 .Os .Sh NAME @@ -72,13 +72,20 @@ see .It database routines see .Xr db 3 -.It bit operators +.It bit string operators see .Xr bitstring 3 +.It bit and byte utilities +see +.Xr stdbit 3 .It string operators see .Xr string 3 +and +.Xr bstring 3 .It character tests and character operators +see +.Xr ctype 3 .It storage allocation see .Xr mpool 3 diff --git a/share/man/man3/queue.3 b/share/man/man3/queue.3 index 79c8d92decbe..535358ae82d5 100644 --- a/share/man/man3/queue.3 +++ b/share/man/man3/queue.3 @@ -1420,13 +1420,13 @@ while in userland builds it prints the diagnostic message on .Dv stderr and then calls .Fn abort . -These behaviors can be overriden by defining a custom +These behaviors can be overridden by defining a custom .Fn QMD_PANIC macro before first inclusion of .In sys/queue.h . The diagnostic messages automatically include the source file, line and function -where the failing check occured. -This behavior can be overriden by defining a custom +where the failing check occurred. +This behavior can be overridden by defining a custom .Fn QMD_ASSERT macro before first inclusion of .In sys/queue.h . diff --git a/share/man/man3/siginfo.3 b/share/man/man3/siginfo.3 index f57cf5f7d706..59e3ecf8f3e8 100644 --- a/share/man/man3/siginfo.3 +++ b/share/man/man3/siginfo.3 @@ -224,7 +224,7 @@ raised by a hardware watchpoint exception may report the data address that triggered the watchpoint in .Va si_addr . .Pp -Sychronous signals set +Synchronous signals set .Va si_trapno to a machine-dependent trap number. .Pp diff --git a/share/man/man3/snl.3 b/share/man/man3/snl.3 index 9a6eceb66a32..04bae46691bf 100644 --- a/share/man/man3/snl.3 +++ b/share/man/man3/snl.3 @@ -288,7 +288,7 @@ main(int ac, char *argv[]) struct nl_parsed_link link = {}; if (!snl_parse_nlmsg(&ss, hdr, &link_parser, &link)) continue; - printf("Link#%u %s mtu %u\n", link.ifi_index, link.ifla_ifname, link.ifla_mtu); + printf("Link#%u %s mtu %u\en", link.ifi_index, link.ifla_ifname, link.ifla_mtu); } return (0); diff --git a/share/man/man3/stdbit.3 b/share/man/man3/stdbit.3 new file mode 100644 index 000000000000..ec647fea4a7f --- /dev/null +++ b/share/man/man3/stdbit.3 @@ -0,0 +1,120 @@ +.\" +.\" Copyright (c) 2025 Robert Clausecker <fuz@FreeBSD.org> +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.Dd November 9, 2025 +.Dt STDBIT 3 +.Os +.Sh NAME +.Nm stdbit +.Nd bit and byte utilities +.Sh SYNOPSIS +.Lb libc +.In stdbit.h +.Fd #define __STDC_ENDIAN_LITTLE__ +.Fd #define __STDC_ENDIAN_BIG__ +.Fd #define __STDC_ENDIAN_NATIVE__ +.Ft unsigned int +.Fn stdc_count_leading_zeros "value" +.Ft unsigned int +.Fn stdc_count_leading_ones "value" +.Ft unsigned int +.Fn stdc_count_trailing_zeros "value" +.Ft unsigned int +.Fn stdc_count_trailing_ones "value" +.Ft unsigned int +.Fn stdc_first_leading_zero "value" +.Ft unsigned int +.Fn stdc_first_leading_one "value" +.Ft unsigned int +.Fn stdc_first_trailing_zero "value" +.Ft unsigned int +.Fn stdc_first_trailing_one "value" +.Ft unsigned int +.Fn stdc_count_zeros "value" +.Ft unsigned int +.Fn stdc_count_ones "value" +.Ft bool +.Fn stdc_has_single_bit "value" +.Ft unsigned int +.Fn stdc_bit_width "value" +.Ft typeof Ns Pq Em value +.Fn stdc_bit_floor "value" +.Ft typeof Ns Pq Em value +.Fn stdc_bit_ceil "value" +.Sh DESCRIPTION +The +.Dv __STDC_ENDIAN_NATIVE__ +macro describes the byte order or endianness of the machine for which the +program is built. +If the machine has big-endian byte order, this macro is equal to +.Dv __STDC_ENDIAN_BIG__ . +If the machine has little-endian byte order, this macro is equal to +.Dv __STDC_ENDIAN_LITTLE__ . +Otherwise, the macro has a value that is equal to neither. +.Pp +The bit and byte utility functions analyze the bits within a datum. +Each function +.Em func +is provided in five variants +.Nm stdc_ Ns Em func Ns Em _ Ns Em type Ns Pq Em value +where +.Fa value +is of type +.Va unsigned char , +.Va unsigned short , +.Va unsigned int , +.Va unsigned long , +or +.Va unsigned long long +for +.Em type +being +.Sy uc , +.Sy us , +.Sy ui , +.Sy ul , +or +.Sy ull +respectively. +Additionally, for each +.Em func , +a type-generic macro +.Nm stdc_ Ns Em func Ns Pq Em value +that picks the appropriate function +.Nm stdc_ Ns Em func Ns Em _ Ns Em type Ns Pq Em value +based on the type of +.Fa value +is provided. +.Sh SEE ALSO +.Xr arch 7 , +.Xr bitstring 3 , +.Xr ffs 3 , +.Xr fls 3 , +.Xr stdc_count_leading_zeros 3 , +.Xr stdc_count_leading_ones 3 , +.Xr stdc_count_trailing_zeros 3 , +.Xr stdc_count_trailing_ones 3 , +.Xr stdc_first_leading_zero 3 , +.Xr stdc_first_leading_one 3 , +.Xr stdc_first_trailing_zero 3 , +.Xr stdc_first_trailing_one 3 , +.Xr stdc_count_zeros 3 , +.Xr stdc_count_ones 3 , +.Xr stdc_has_single_bit 3 , +.Xr stdc_bit_width 3 , +.Xr stdc_bit_floor 3 , +.Xr stdc_bit_ceil 3 +.Sh STANDARDS +The macros and functions of the +.In stdbit.h +header conform to +.St -isoC-2023 . +.Sh HISTORY +The +.In stdbit.h +header and the macros and functions defined therein where added in +.Fx 15.1. +.Sh AUTHOR +.Ah Robert Clausecker Aq Mt fuz@FreeBSD.org diff --git a/share/man/man3/unreachable.3 b/share/man/man3/unreachable.3 new file mode 100644 index 000000000000..9dd7da806d42 --- /dev/null +++ b/share/man/man3/unreachable.3 @@ -0,0 +1,90 @@ +.\" +.\" Copyright (c) 2025 Robert Clausecker <fuz@FreeBSD.org> +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.Dd November 27, 2025 +.Dt UNREACHABLE 3 +.Os +.Sh NAME +.Nm unreachable +.Nd the unreachable macro +.Sh SYNOPSIS +.In stddef.h +.Fd #define unreachable() +.Sh DESCRIPTION +If the +.Fn unreachable +macro is reached during execution, behavior is undefined. +This can be useful to hint to the compiler that some invariant is guaranteed to +hold or that some case cannot occur. +.Sh EXAMPLES +Suppose a floating-point number +.Va x +is to be classified using the +.Xr fpclassify 3 +macro and a different action is to be taken based on the result of the +classification. +As the set of possible return values is known, the +.Fn unreachable +macro can be used to hint to the compiler that it can omit checks for +other possible return values: +.Bd -literal -offset 3n +#include <math.h> +#include <stddef.h> +#include <stdio.h> + +void print_classification(double x) +{ + printf("%f: ", x); + + switch (fpclassify(x)) { + case FP_INFINITE: + puts("infinite"); + break; + + case FP_NAN: + puts("not a number"); + break; + + case FP_NORMAL: + puts("normal"); + break; + + case FP_SUBNORMAL: + puts("subnormal"); + break; + + case FP_ZERO: + puts("zero"); + break; + + default: + unreachable(); + } +} +.Ed +.Sh SEE ALSO +.Xr assert 3 +.Sh STANDARDS +The +.Fn unreachable +macro conforms to +.St -isoC-2023 . +.Sh HISTORY +A +.Dv /*NOTREACHED*/ +conventional comment was supported by the historical +.Xr lint 1 +utility to suppress warnings about unreachable statements during static +analysis. +The +.Fn unreachable +macro was added in +.Fx 15.1 +based on the earlier private +.Fn __unreachable +macro for compliance with +.St -isoC-2023 . +.Sh AUTHOR +.Ah Robert Clausecker Aq Mt fuz@FreeBSD.org diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile index 1ba1fe46523e..722ee2bc9334 100644 --- a/share/man/man4/Makefile +++ b/share/man/man4/Makefile @@ -1,13 +1,16 @@ .include <src.opts.mk> MANGROUPS= MAN -MANPACKAGE= kernel +MANPACKAGE= kernel-man # If you add a new file here, please consider adding an entry to the # hardware notes template (website/archetypes/release/hardware.adoc in # the doc repository); otherwise the automatically generated hardware # notes will not include your driver. +# If you enable a driver for a different architecture, please remember +# to update the arch specifier in the document title of the manual. + MAN= aac.4 \ aacraid.4 \ acpi.4 \ @@ -66,6 +69,12 @@ MAN= aac.4 \ audit.4 \ auditpipe.4 \ aue.4 \ + ${_aw_gpio.4} \ + ${_aw_mmc.4} \ + ${_aw_rtc.4} \ + ${_aw_sid.4} \ + ${_aw_spi.4} \ + ${_aw_syscon.4} \ axe.4 \ axge.4 \ axp.4 \ @@ -180,6 +189,7 @@ MAN= aac.4 \ geom.4 \ geom_linux_lvm.4 \ geom_uzip.4 \ + geom_zero.4 \ gif.4 \ ${_gve.4} \ gpio.4 \ @@ -195,7 +205,6 @@ MAN= aac.4 \ hidbus.4 \ hidquirk.4 \ hidraw.4 \ - hifn.4 \ hkbd.4 \ hms.4 \ hmt.4 \ @@ -450,7 +459,6 @@ MAN= aac.4 \ p9fs.4 \ pass.4 \ pca954x.4 \ - pccard.4 \ pccbb.4 \ pcf.4 \ pcf8574.4 \ @@ -458,7 +466,6 @@ MAN= aac.4 \ ${_pchtherm.4} \ pci.4 \ pcib.4 \ - pcic.4 \ pcm.4 \ ${_pf.4} \ ${_pflog.4} \ @@ -586,6 +593,7 @@ MAN= aac.4 \ tdfx.4 \ termios.4 \ textdump.4 \ + thunderbolt.4 \ ti.4 \ timecounters.4 \ tmpfs.4 \ @@ -594,6 +602,7 @@ MAN= aac.4 \ tty.4 \ tun.4 \ tws.4 \ + u2f.4 \ udp.4 \ udplite.4 \ ${_ufshci.4} \ @@ -846,7 +855,7 @@ _cpuctl.4= cpuctl.4 _dpms.4= dpms.4 _ftgpio.4= ftgpio.4 _ftwd.4= ftwd.4 -_hn.4= _hn.4 +_hn.4= hn.4 _hpt27xx.4= hpt27xx.4 _hptiop.4= hptiop.4 _hptmv.4= hptmv.4 @@ -882,7 +891,6 @@ _ntb_hw_intel.4= ntb_hw_intel.4 _ntb_hw_plx.4= ntb_hw_plx.4 _ntb_transport.4=ntb_transport.4 _nvram.4= nvram.4 -_padlock.4= padlock.4 _pchtherm.4= pchtherm.4 _qat.4= qat.4 _qat_c2xxx.4= qat_c2xxx.4 @@ -929,6 +937,10 @@ _vmm.4= vmm.4 .endif .endif +.if ${MACHINE_CPUARCH} == "i386" +_padlock.4= padlock.4 +.endif + .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "aarch64" _hwt.4= hwt.4 .if ${MACHINE_CPUARCH} == "amd64" @@ -957,6 +969,12 @@ _vmx.4= vmx.4 .if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "aarch64" || \ ${MACHINE_CPUARCH} == "riscv" +_aw_gpio.4= aw_gpio.4 +_aw_mmc.4= aw_mmc.4 +_aw_rtc.4= aw_rtc.4 +_aw_sid.4= aw_sid.4 +_aw_spi.4= aw_spi.4 +_aw_syscon.4= aw_syscon.4 _cgem.4= cgem.4 MLINKS+=cgem.4 if_cgem.4 .endif @@ -986,19 +1004,23 @@ _ccd.4= ccd.4 .if ${MK_CDDL} != "no" _dtrace_provs= dtrace_audit.4 \ + dtrace_callout_execute.4 \ dtrace_dtrace.4 \ dtrace_fbt.4 \ dtrace_io.4 \ dtrace_ip.4 \ dtrace_kinst.4 \ dtrace_lockstat.4 \ + dtrace_pid.4 \ + dtrace_priv.4 \ dtrace_proc.4 \ dtrace_profile.4 \ dtrace_sched.4 \ dtrace_sctp.4 \ dtrace_tcp.4 \ dtrace_udp.4 \ - dtrace_udplite.4 + dtrace_udplite.4 \ + dtrace_vfs.4 MLINKS+= dtrace_audit.4 dtaudit.4 .endif @@ -1061,6 +1083,7 @@ MAN+= \ ucom.4 \ ucycom.4 \ udav.4 \ + udbc.4 \ udbp.4 \ udl.4 \ uep.4 \ @@ -1100,6 +1123,7 @@ MAN+= \ veriexec.4 \ zyd.4 +MLINKS+=geom_zero.4 gzero.4 MLINKS+=mtw.4 if_mtw.4 MLINKS+=otus.4 if_otus.4 MLINKS+=rsu.4 if_rsu.4 diff --git a/share/man/man4/aac.4 b/share/man/man4/aac.4 index 7a7d0350dcdb..f4b431cc6b4f 100644 --- a/share/man/man4/aac.4 +++ b/share/man/man4/aac.4 @@ -1,3 +1,6 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" .\" Copyright (c) 2000 Scott Long .\" All rights reserved. .\" @@ -21,7 +24,7 @@ .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. -.Dd July 10, 2009 +.Dd September 29, 2025 .Dt AAC 4 .Os .Sh NAME @@ -83,9 +86,10 @@ Linux-compatible interface for the management device will be enabled and will allow Linux-based management applications to control the card. .Sh HARDWARE -Controllers supported by the +The .Nm -driver include: +driver supports the following Parallel SCSI, SATA, and 3G SAS +RAID controllers from the Adaptec AAC family: .Pp .Bl -bullet -compact .It diff --git a/share/man/man4/aacraid.4 b/share/man/man4/aacraid.4 index 3bf683ac40c8..0f64f36c493a 100644 --- a/share/man/man4/aacraid.4 +++ b/share/man/man4/aacraid.4 @@ -1,3 +1,6 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" .\" Copyright (c) 2013 Achim Leubner .\" All rights reserved. .\" @@ -21,12 +24,12 @@ .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. -.Dd June 19, 2015 +.Dd September 29, 2025 .Dt AACRAID 4 .Os .Sh NAME .Nm aacraid -.Nd Adaptec AACRAID Controller driver +.Nd Adaptec Series 6/7/8 6G and 12G SAS+SATA RAID controller driver .Sh SYNOPSIS To compile this driver into the kernel, place the following lines in your @@ -78,9 +81,10 @@ Linux-compatible interface for the management device will be enabled and will allow Linux-based management applications to control the card. .Sh HARDWARE -Controllers supported by the +The .Nm -driver include: +driver supports the following +Adaptec 6G and 12G SAS/SATA RAID controllers: .Pp .Bl -bullet -compact .It diff --git a/share/man/man4/acpi_battery.4 b/share/man/man4/acpi_battery.4 index 3707cd125678..49fed625ea31 100644 --- a/share/man/man4/acpi_battery.4 +++ b/share/man/man4/acpi_battery.4 @@ -158,8 +158,8 @@ Typically this will decrease every charging cycle. .It btech Battery technology: .Bl -tag -width indent -.It 0x00000000 Primary cell Pq non-rechargable -.It 0x00000001 Secondary cell Pq rechargable +.It 0x00000000 Primary cell Pq non-rechargeable +.It 0x00000001 Secondary cell Pq rechargeable .El .It Va dvol Design voltage in mV, diff --git a/share/man/man4/agp.4 b/share/man/man4/agp.4 index 2aeb01850085..b7a649117f36 100644 --- a/share/man/man4/agp.4 +++ b/share/man/man4/agp.4 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd November 28, 2007 +.Dd October 24, 2025 .Dt AGP 4 .Os .Sh NAME @@ -34,7 +34,7 @@ The .Nm driver is slated to be removed in -.Fx 15.0 . +.Fx 16.0 . .Sh DESCRIPTION The .Nm diff --git a/share/man/man4/ahc.4 b/share/man/man4/ahc.4 index 38712c1f08b6..a2aa911c0646 100644 --- a/share/man/man4/ahc.4 +++ b/share/man/man4/ahc.4 @@ -1,4 +1,6 @@ .\" +.\" SPDX-License-Identifier: BSD-3-Clause +.\" .\" Copyright (c) 1995, 1996, 1997, 1998, 2000 .\" Justin T. Gibbs. All rights reserved. .\" @@ -24,7 +26,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd February 15, 2017 +.Dd September 29, 2025 .Dt AHC 4 .Os .Sh NAME @@ -142,7 +144,7 @@ system hang if memory mapped I/O is attempted. .Pp Most modern motherboards perform the initialization correctly and work fine with this option enabled and it is the default. This option can also be -dynamically configued through a device hint documented below. +dynamically configured through a device hint documented below. .Ed .Pp To statically configure one or more controllers to assume the target role: @@ -172,11 +174,7 @@ adapter, defaults to enabled (0 -- disabled, 1 -- enabled). .Sh HARDWARE The .Nm -driver supports the following -.Tn SCSI -host adapter chips and -.Tn SCSI -controller cards: +driver supports the following VL/ISA/PCI parallel SCSI controllers and cards: .Pp .Bl -bullet -compact .It diff --git a/share/man/man4/ahd.4 b/share/man/man4/ahd.4 index c173a8cef619..7fa08c12b5b5 100644 --- a/share/man/man4/ahd.4 +++ b/share/man/man4/ahd.4 @@ -1,4 +1,6 @@ .\" +.\" SPDX-License-Identifer: BSD-3-Clause +.\" .\" Copyright (c) 1995, 1996, 1997, 1998, 2000 .\" Justin T. Gibbs. All rights reserved. .\" Copyright (c) 2002 @@ -26,7 +28,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd July 4, 2004 +.Dd September 29, 2025 .Dt AHD 4 .Os .Sh NAME @@ -132,7 +134,7 @@ A hint to define whether the SCSI target mode is enabled (0 -- disabled, 1 -- en .Sh HARDWARE The .Nm -driver supports the following: +driver supports the following PCI/PCI-X parallel SCSI controllers: .Pp .Bl -bullet -compact .It diff --git a/share/man/man4/ata.4 b/share/man/man4/ata.4 index feea1dd3cc85..29b6bbef6838 100644 --- a/share/man/man4/ata.4 +++ b/share/man/man4/ata.4 @@ -155,7 +155,9 @@ The .Va hw.ata.ata_dma_check_80pin tunable can be set to 0 to disable this check. .Sh HARDWARE -The currently supported ATA/SATA controller chips are: +The +.Nm +driver supports the IDE interface on the following ATA/SATA controllers: .Pp .Bl -tag -width "Silicon Image:" -compact .It Acard: diff --git a/share/man/man4/ath.4 b/share/man/man4/ath.4 index e731277e4e75..b40ccbd16f09 100644 --- a/share/man/man4/ath.4 +++ b/share/man/man4/ath.4 @@ -258,7 +258,6 @@ This should not happen. .Xr ath_hal 4 , .Xr cardbus 4 , .Xr intro 4 , -.Xr pcic 4 , .Xr wlan 4 , .Xr wlan_ccmp 4 , .Xr wlan_tkip 4 , diff --git a/share/man/man4/man4.arm/aw_gpio.4 b/share/man/man4/aw_gpio.4 index 5cbc7562d9bd..5cbc7562d9bd 100644 --- a/share/man/man4/man4.arm/aw_gpio.4 +++ b/share/man/man4/aw_gpio.4 diff --git a/share/man/man4/man4.arm/aw_mmc.4 b/share/man/man4/aw_mmc.4 index eb7fc9ce020a..072835cce7c0 100644 --- a/share/man/man4/man4.arm/aw_mmc.4 +++ b/share/man/man4/aw_mmc.4 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd Dec 25, 2017 +.Dd October 20, 2025 .Dt AW_MMC 4 .Os .Sh NAME @@ -48,6 +48,8 @@ allwinner,sun5i-a13-mmc allwinner,sun7i-a20-mmc .It allwinner,sun50i-a64-mmc +.It +allwinner,sun20i-d1-mmc .El .Sh SYSCTL VARIABLES The following read-only variables are available via diff --git a/share/man/man4/man4.arm/aw_rtc.4 b/share/man/man4/aw_rtc.4 index 1296cd41da68..1296cd41da68 100644 --- a/share/man/man4/man4.arm/aw_rtc.4 +++ b/share/man/man4/aw_rtc.4 diff --git a/share/man/man4/man4.arm/aw_sid.4 b/share/man/man4/aw_sid.4 index 5cd2f3d5e072..5cd2f3d5e072 100644 --- a/share/man/man4/man4.arm/aw_sid.4 +++ b/share/man/man4/aw_sid.4 diff --git a/share/man/man4/man4.arm/aw_spi.4 b/share/man/man4/aw_spi.4 index f8985e1c16bb..f8985e1c16bb 100644 --- a/share/man/man4/man4.arm/aw_spi.4 +++ b/share/man/man4/aw_spi.4 diff --git a/share/man/man4/man4.arm/aw_syscon.4 b/share/man/man4/aw_syscon.4 index e32f329e489a..e32f329e489a 100644 --- a/share/man/man4/man4.arm/aw_syscon.4 +++ b/share/man/man4/aw_syscon.4 diff --git a/share/man/man4/bce.4 b/share/man/man4/bce.4 index ab979f371b66..aab9eaebd505 100644 --- a/share/man/man4/bce.4 +++ b/share/man/man4/bce.4 @@ -240,7 +240,7 @@ Values from 0-256 are valid. A value of 0 disables this status block update (default 6). .It Va hw.bce.tx_ticks Time in microsecond ticks to wait before a status block -update is generated due to TX activitiy. +update is generated due to TX activity. Values from 0-100 are valid. A value of 0 disables this status block update. Cannot be set to 0 if hw.bce.tx_quick_cons_trip is also 0 diff --git a/share/man/man4/blackhole.4 b/share/man/man4/blackhole.4 index bb955fd4497d..777a38eedc86 100644 --- a/share/man/man4/blackhole.4 +++ b/share/man/man4/blackhole.4 @@ -10,15 +10,12 @@ .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" -.Dd May 25, 2024 +.Dd September 24, 2025 .Dt BLACKHOLE 4 .Os .Sh NAME .Nm blackhole -.Nd a -.Xr sysctl 8 -MIB for manipulating behaviour in respect of refused SCTP, TCP, or UDP connection -attempts +.Nd quietly drop refused SCTP, TCP, or UDP packets .Sh SYNOPSIS .Cd sysctl net.inet.sctp.blackhole Ns Op = Ns Brq "0 | 1 | 2" .Cd sysctl net.inet.tcp.blackhole Ns Op = Ns Brq "0 | 1 | 2 | 3" diff --git a/share/man/man4/bridge.4 b/share/man/man4/bridge.4 index 7048df4593bf..3af952256d3a 100644 --- a/share/man/man4/bridge.4 +++ b/share/man/man4/bridge.4 @@ -36,7 +36,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd July 28, 2025 +.Dd October 13, 2025 .Dt IF_BRIDGE 4 .Os .Sh NAME @@ -272,53 +272,149 @@ by setting the node using .Xr sysctl 8 . .Sh VLAN SUPPORT -The +Virtual LANs (VLANs), defined in the IEEE 802.1Q standard, allow traffic +on a bridge to be segregated into separate logical networks which cannot +communicate with each other. +For example, two interfaces in VLAN 10 would be able to communicate +with each other, but not with another interface in VLAN 20. +.Pp +Each VLAN is identified by a number between 1 and 4094 inclusive. +By default, all traffic on the bridge is assigned to "VLAN 0", +a pseudo-VLAN used for historical compatibility. +When VLANs are in use on a bridge, it is recommended to explicitly +assign all traffic to a VLAN rather than using VLAN 0. +.Pp +The bridge implements Independent VLAN Learning (IVL), meaning that +host addresses are learned separately for each VLAN, and the same host +address may exist on several different ports in different VLANs. +.Pp +If a +.Xr vlan 4 +interface is configured on an interface which is also an .Nm -driver has full support for virtual LANs (VLANs). -The bridge implements independent VLAN learning, i.e. MAC addresses are -learned on a per-VLAN basis, and the same MAC address may be learned on -multiple interfaces on different VLANs. -Incoming frames with an 802.1Q tag will be assigned to the appropriate -VLAN. -.Pp -Traffic sent to or from the host is not assigned to a VLAN by default. -To allow the host to communicate on a VLAN, configure a +member interface, all tagged frames will be processed by the .Xr vlan 4 -interface on the bridge and (if necessary) assign IP addresses there. -.Pp -By default no access control is enabled, so any interface may -participate in any VLAN. -.Pp -VLAN filtering may be enabled on a bridge using the +interface and will not be visible to the bridge. +This configuration is not recommended and may be unsupported in a +future release. +.Ss Tagged and untagged traffic +Incoming frames on a member interface may be either tagged or untagged. +Tagged frames contain an 802.1Q header indicating which VLAN the +frame belongs to, while untagged frames do not. +When a tagged frame is received, the frame is automatically assigned to +the VLAN in the tag (subject to any configured VLAN access list), +while untagged frames are assigned to the interface's configured +Port VLAN ID (PVID), or to VLAN 0 if no PVID is configured. +.Ss Assigning interfaces to VLANs +An interface's PVID may be configured using the .Xr ifconfig 8 -.Cm vlanfilter -option. -When VLAN filtering is enabled, an interface may only send and receive -frames based on its configured VLAN access list. +.Cm ifuntagged +command: +.Bd -literal -offset indent +ifconfig bridge0 ifuntagged ix0 10 +.Ed .Pp -The interface's untagged VLAN ID may be configured using the -.Xr ifconfig 8 +Or by using the .Cm untagged -option. -If an untagged VLAN ID is configured, incoming frames will be assigned -to that VLAN, and the interface may receive outgoing untagged frames -in that VLAN. -.Pp -The tagged VLAN access list may be configured using the -.Cm tagged , -.Cm +tagged -and -.Cm -tagged -options to -.Xr ifconfig 8 . -An interface may send and receive tagged frames for any VLAN in its -access list. +option to +.Cm addm : +.Bd -literal -offset indent +ifconfig bridge0 addm ix0 untagged 10 +.Ed .Pp -The bridge will automatically insert or remove 802.1q tags as needed, -based on the interface configuration, when forwarding frames between -interfaces. -This tag processing is only done for interfaces with VLAN filtering -enabled. +This will assign all untagged traffic received on the interface to the +specified VLAN, and any traffic transmitted on the interface in this +VLAN will have its VLAN tag (if present) removed. +Conversely, any traffic transmitted on the interface in a different +VLAN will have a tag added, to allow the remote system to assign the +traffic to the appropriate VLAN. +.Ss Host communication in a VLAN +Sometimes it is useful to allow the host itself to communicate in a VLAN, +for example to provide routing to other hosts in the VLAN. +To do this, create a +.Xr vlan 4 +interface on top of the +.Nm +interface with the appropriate VLAN tag. +For example, to allow the host to communicate in VLAN 10: +.Bd -literal -offset indent +ifconfig bridge0.10 create inet6 2001:db8::1/64 +.Ed +.Ss Configuring the VLAN access list (VLAN filtering) +For historical reasons, the default +.Nm +configuration allows all interfaces to send tagged traffic for any VLAN, +meaning that VLANs do not provide security separation. +To restrict which interfaces may communicate in which VLANs, +enable VLAN filtering on the bridge: +.Bd -literal -offset indent +ifconfig bridge0 vlanfilter +.Ed +.Pp +This has the following effects on bridge members: +.Bl -bullet -offset indent +.It +No untagged frames will be accepted from a member interface unless +the interface has a PVID configured. +.It +No tagged frames will be accepted from a member interface unless +the VLAN identifier is present in the interface's VLAN access list. +.It +Frames with stacked tags (Q-in-Q) will not be accepted from a +member interface unless the +.Cm qinq +option (see below) has been configured for that member. +.El +.Pp +To configure the VLAN access list, use the +.Xr ifconfig 8 +.Cm iftagged , +.Cm +iftagged +or +.Cm -iftagged +commands. +For example, to allow an interface to communicate in VLANs 10, 20, +and any VLAN from 100 to 199: +.Bd -literal -offset indent +ifconfig bridge0 iftagged ix0 10,20,100-199 +.Ed +.Ss IEEE 802.1ad (Q-in-Q) configuration +IEEE 802.1ad, also called Q-in-Q or +.Dq tag stacking , +allows a single Ethernet frame to contain multiple tags. +This allows one Ethernet network to transport traffic between endpoints +using its own VLAN tags without interfering with any pre-existing tags, +and is often used in service provider networks to provide +.Dq virtual wire +Ethernet services. +.Pp +When VLAN filtering is enabled, +.Nm +does not permit member interfaces to send Q-in-Q frames, because in +certain configuration this allows +.Dq VLAN-hopping +attacks on the bridge. +For example, consider a bridge with port ix0 configured as a tagged +port in VLAN 10, and port ix1 configured as untagged in VLAN 10 and +tagged in VLAN 20. +If ix0 is allowed to send Q-in-Q frames, then it can send a frame with +two tags: one for VLAN 10, followed by one for VLAN 20. +When the bridge forwards the frame to ix1, it will strip the VLAN tag +for VLAN 10, then forward the frame to ix1 with the tag for VLAN 20 +intact, effectively allowing ix1 to send traffic on VLAN 20 even +though the bridge configuration should not permit that. +.Pp +To permit an interface to send Q-in-Q frames, set the +.Xr ifconfig 8 +.Cm qinq +flag on the interface. +This is only required on the interface which will send Q-in-Q frames, +not the interface receiving the frames. +.Pp +Alternatively, set the +.Cm defqinq +flag on the bridge itself to enable Q-in-Q for all newly-added +interfaces by default. .Sh PACKET FILTERING Packet filtering can be used with any firewall package that hooks in via the .Xr pfil 9 @@ -537,6 +633,36 @@ ifconfig_wlan0="up ssid my_ap mode 11g" ifconfig_fxp0="up" .Ed .Pp +The following will cause a bridge to be created with two VLANs, +10 and 20, where the +.Dq Li em +interfaces can only communicate in their assigned VLANs, +while +.Dq Li ix0 +is a trunk port which can communicate in either VLAN: +.Bd -literal -offset indent +cloned_interfaces="bridge0" +ifconfig_bridge0="vlanfilter \e + addm em0 untagged 10 \e + addm em1 untagged 10 \e + addm em2 untagged 20 \e + addm em3 untagged 20 \e + addm ix0 tagged 10,20" +ifconfig_em0="up" +ifconfig_em1="up" +ifconfig_em2="up" +ifconfig_em3="up" +ifconfig_ix0="up" +.Ed +.Pp +The previous example could be extended to allow the host to +communicate in VLANs 10 and 20: +.Bd -literal -offset indent +vlans_bridge0="10 20" +ifconfig_bridge0_10_ipv6="inet6 2001:db8:0:10::1/64" +ifconfig_bridge0_20_ipv6="inet6 2001:db8:0:20::1/64" +.Ed +.Pp Consider a system with two 4-port Ethernet boards. The following will cause a bridge consisting of all 8 ports with Rapid Spanning Tree enabled to be created: diff --git a/share/man/man4/cardbus.4 b/share/man/man4/cardbus.4 index 3b422b44c464..fa4bce65e095 100644 --- a/share/man/man4/cardbus.4 +++ b/share/man/man4/cardbus.4 @@ -52,5 +52,4 @@ Non-zero value causes the CIS parsing of the 32-bit CardBus card to be much more verbose and include a complete CIS dump. .El .Sh SEE ALSO -.Xr pccard 4 , .Xr pccbb 4 diff --git a/share/man/man4/cdceem.4 b/share/man/man4/cdceem.4 index 6d8caf53cc02..c2a282027241 100644 --- a/share/man/man4/cdceem.4 +++ b/share/man/man4/cdceem.4 @@ -1,3 +1,6 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" .\" Copyright (c) 2019 Edward Tomasz Napierala <trasz@FreeBSD.org> .\" .\" Redistribution and use in source and binary forms, with or without @@ -20,12 +23,12 @@ .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. -.Dd November 7, 2019 +.Dd September 18, 2025 .Dt CDCEEM 4 .Os .Sh NAME .Nm cdceem -.Nd "USB Communication Device Class Ethernet Emulation Model (CDC EEM) driver" +.Nd USB Communication Device Class Ethernet Emulation Model driver .Sh SYNOPSIS To compile this driver into the kernel, place the following lines in your diff --git a/share/man/man4/ciss.4 b/share/man/man4/ciss.4 index 28d6556ecd85..d731aaddad38 100644 --- a/share/man/man4/ciss.4 +++ b/share/man/man4/ciss.4 @@ -1,7 +1,7 @@ .\" Written by Tom Rhodes .\" This file is in the public domain. .\" -.Dd January 26, 2012 +.Dd November 6, 2025 .Dt CISS 4 .Os .Sh NAME @@ -87,9 +87,10 @@ might be solved by updating the firmware and/or setting the .Va hw.ciss.nop_message_heartbeat tunable to non-zero at boot time. .Sh HARDWARE -Controllers supported by the +The .Nm -driver include: +driver supports controllers implementing +Common Interface for SCSI-3 Support Open Specification v1.04, including: .Pp .Bl -bullet -compact .It @@ -145,6 +146,8 @@ HP Smart Array P430i .It HP Smart Array P431 .It +HP Smart Array P440ar +.It HP Smart Array P530 .It HP Smart Array P531 diff --git a/share/man/man4/crypto.4 b/share/man/man4/crypto.4 index b1423752718e..4242a6631352 100644 --- a/share/man/man4/crypto.4 +++ b/share/man/man4/crypto.4 @@ -346,7 +346,6 @@ Destroys the session identified by .El .Sh SEE ALSO .Xr aesni 4 , -.Xr hifn 4 , .Xr ipsec 4 , .Xr padlock 4 , .Xr safe 4 , diff --git a/share/man/man4/cxgbe.4 b/share/man/man4/cxgbe.4 index bfba202d1fec..77465a3ae590 100644 --- a/share/man/man4/cxgbe.4 +++ b/share/man/man4/cxgbe.4 @@ -29,7 +29,7 @@ .\" .\" * Other names and brands may be claimed as the property of others. .\" -.Dd November 10, 2022 +.Dd September 29, 2025 .Dt CXGBE 4 .Os .Sh NAME @@ -73,6 +73,7 @@ driver uses different names for devices based on the associated ASIC: .It T4 Ta cxgbe Ta t4nex Ta vcxgbe .It T5 Ta cxl Ta t5nex Ta vcxl .It T6 Ta cc Ta t6nex Ta vcc +.It T7 Ta che Ta chnex Ta vche .El .Pp Loader tunables with the hw.cxgbe prefix apply to all cards. @@ -416,6 +417,8 @@ Support for T6 cards first appeared in .Fx 11.1 and .Fx 12.0 . +Support for T7 cards first appeared in +.Fx 15.0 . .Sh AUTHORS .An -nosplit The diff --git a/share/man/man4/ddb.4 b/share/man/man4/ddb.4 index 3c4894c03d62..a882a5204fb2 100644 --- a/share/man/man4/ddb.4 +++ b/share/man/man4/ddb.4 @@ -24,7 +24,7 @@ .\" any improvements or extensions that they make and grant Carnegie Mellon .\" the rights to redistribute these changes. .\" -.Dd June 10, 2025 +.Dd October 31, 2025 .Dt DDB 4 .Os .Sh NAME @@ -604,12 +604,15 @@ The modifier will print command line arguments for each process. .\" .Pp -.It Ic show Cm all tcpcbs Ns Op Li / Ns Cm b Ns Cm l +.It Ic show Cm all tcpcbs Ns Op Li / Ns Cm b Ns Cm i Ns Cm l Show the same output as "show tcpcb" does, but for all TCP control blocks within the system. The .Cm b modifier will request BBLog entries to be printed. +If the +.Cm i +modifier is provided, the corresponding IP control block is also shown. Using the .Cm l modifier will limit the output to TCP control blocks, which are locked. @@ -1106,7 +1109,7 @@ on i386.) Not present on some platforms. .\" .Pp -.It Ic show Cm tcpcb Ns Oo Li / Ns Cm b Oc Ar addr +.It Ic show Cm tcpcb Ns Oo Li / Ns Cm b Ns Cm i Oc Ar addr Print TCP control block .Vt struct tcpcb lying at address @@ -1117,6 +1120,9 @@ header file. The .Cm b modifier will request BBLog entries to be printed. +If the +.Cm i +modifier is provided, the corresponding IP control block is also shown. .\" .Pp .It Ic show Cm thread Op Ar addr | tid diff --git a/share/man/man4/dtrace_callout_execute.4 b/share/man/man4/dtrace_callout_execute.4 new file mode 100644 index 000000000000..1154ed066b97 --- /dev/null +++ b/share/man/man4/dtrace_callout_execute.4 @@ -0,0 +1,68 @@ +.\" +.\" Copyright (c) 2025 Mateusz Piotrowski <0mp@FreeBSD.org> +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.Dd November 4, 2025 +.Dt DTRACE_CALLOUT_EXECUTE 4 +.Os +.Sh NAME +.Nm dtrace_callout_execute +.Nd a DTrace provider for the callout API +.Sh SYNOPSIS +.Nm callout_execute Ns Cm :kernel::callout_start +.Nm callout_execute Ns Cm :kernel::callout_end +.Sh DESCRIPTION +The +.Nm callout_execute +provider allows for tracing the +.Xr callout 9 +mechanism. +.Pp +The +.Nm callout_execute Ns Cm :kernel::callout_start +probe fires just before a callout. +.Pp +The +.Nm callout_execute Ns Cm :kernel::callout_end +probe fires right after a callout. +.Pp +The only argument to the +.Nm callout_execute +probes, +.Fa args[0] , +is a callout handler +.Ft struct callout * +of the invoked callout. +.Sh EXAMPLES +.Ss Example 1: Graph of Callout Execution Time +The following +.Xr d 7 +script generates a distribution graph of +.Xr callout 9 +execution times: +.Bd -literal -offset 2n +callout_execute:::callout_start +{ + self->cstart = timestamp; +} + +callout_execute:::callout_end +{ + @length = quantize(timestamp - self->cstart); +} +.Ed +.Sh SEE ALSO +.Xr dtrace 1 , +.Xr tracing 7 , +.Xr callout 9 , +.Xr SDT 9 +.Sh AUTHORS +.An -nosplit +The +.Nm callout_execute +provider was written by +.An Robert N. M. Watson Aq Mt rwatson@FreeBSD.org . +.Pp +This manual page was written by +.An Mateusz Piotrowski Aq Mt 0mp@FreeBSD.org . diff --git a/share/man/man4/dtrace_io.4 b/share/man/man4/dtrace_io.4 index 30ec44768fbf..1699cebab8e9 100644 --- a/share/man/man4/dtrace_io.4 +++ b/share/man/man4/dtrace_io.4 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd April 18, 2015 +.Dd October 26, 2025 .Dt DTRACE_IO 4 .Os .Sh NAME @@ -84,7 +84,7 @@ The following script shows a per-process breakdown of total I/O by disk device: io:::start { - @[args[1]->device_name, execname, pid] = sum(args[0]->bio_bcount); + @[args[1]->device_name, execname, pid] = sum(args[0]->bio_length); } END diff --git a/share/man/man4/dtrace_lockstat.4 b/share/man/man4/dtrace_lockstat.4 index e308ca6c22ce..448de91a375f 100644 --- a/share/man/man4/dtrace_lockstat.4 +++ b/share/man/man4/dtrace_lockstat.4 @@ -22,12 +22,12 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd August 20, 2019 +.Dd September 3, 2025 .Dt DTRACE_LOCKSTAT 4 .Os .Sh NAME .Nm dtrace_lockstat -.Nd a DTrace provider for tracing CPU scheduling events +.Nd a DTrace provider for tracing kernel locking events .Sh SYNOPSIS .Fn lockstat:::adaptive-acquire "struct mtx *" .Fn lockstat:::adaptive-release "struct mtx *" diff --git a/share/man/man4/dtrace_pid.4 b/share/man/man4/dtrace_pid.4 new file mode 100644 index 000000000000..1acbdd097ba8 --- /dev/null +++ b/share/man/man4/dtrace_pid.4 @@ -0,0 +1,99 @@ +.\" +.\" Copyright (c) 2025 Mateusz Piotrowski <0mp@FreeBSD.org> +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.Dd November 6, 2025 +.Dt DTRACE_PID 4 +.Os +.Sh NAME +.Nm dtrace_pid +.Nd a DTrace provider for dynamic userspace tracing based on function boundary instrumentation +.Sh SYNOPSIS +.Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&:entry +.\" XXX: For some reason Op renders here in bold, so use literal square +.\" brackets instead. +.Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&: Ns No \&[ Ns Ar offset Ns No \&] +.Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&:return +.Sh DESCRIPTION +The +.Nm pid +provider implements userspace dynamic tracing +by instrumenting the entry and return of functions in userspace programs. +Refer to +.Xr dtrace_fbt 4 +for more details about function boundary instrumentation. +.Pp +The +.Nm pid +provider provides the following probes: +.Bl -inset +.It Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&:entry +instruments the entry of the +.Ar function . +.It Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&: Ns Op Ar offset +instruments the instruction within the +.Ar function +located at +.Ar offset +bytes (expressed as a hexadecimal integer). +.It Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&:return +instruments the return from the +.Ar function . +.El +.Ss Probe Arguments +The arguments of the entry probe +.Pq Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&:entry +are the arguments of the traced function call. +.Bl -column -offset indent "Entry Probe Argument" "Definition" +.It Sy Entry Probe Argument Ta Sy Definition +.It Ft uint64_t Fa arg0 Ta Function's first argument +.It Ft uint64_t Fa arg1 Ta Function's second argument +.It Ft uint64_t Fa arg2 Ta Function's third argument +.It Fa ... Ta ... +.El +.Pp +The offset probes +.Pq Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&: Ns Op Ar offset +do not define any arguments. +Use +.Va uregs[] +to inspect the registers. +.Pp +The arguments of the return probe +.Pq Nm pid Ns Ar PID Ns Cm \&: Ns Ar module Ns Cm \&: Ns Ar function Ns Cm \&:return +are the program counter and the function's return value. +.Bl -column -offset indent "Return Probe Argument" "Definition" +.It Sy Return Probe Argument Ta Sy Definition +.It Ft uint64_t Fa arg0 Ta Program counter +.It Ft uint64_t Fa arg1 Ta Function's return value +.El +.Pp +Note that all probe arguments within the +.Nm pid +provider are of type +.Ft uint64_t . +.Sh SEE ALSO +.Xr dtrace 1 , +.Xr dtrace_fbt 4 , +.Xr dtrace_kinst 4 , +.Xr elf 5 , +.Xr d 7 , +.Xr tracing 7 +.Rs +.%A Brendan Gregg +.%A Jim Mauro +.%B DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD +.%I Prentice Hall +.%D 2011 +.%U https://www.brendangregg.com/dtracebook/ +.Re +.Rs +.%B The illumos Dynamic Tracing Guide +.%O Chapter pid Provider +.%D 2008 +.%U https://illumos.org/books/dtrace/chp-pid.html +.Re +.Sh AUTHORS +This manual page was written by +.An Mateusz Piotrowski Aq Mt 0mp@FreeBSD.org . diff --git a/share/man/man4/dtrace_priv.4 b/share/man/man4/dtrace_priv.4 new file mode 100644 index 000000000000..97bd4c20eb2c --- /dev/null +++ b/share/man/man4/dtrace_priv.4 @@ -0,0 +1,59 @@ +.\" +.\" Copyright (c) 2025 Mateusz Piotrowski <0mp@FreeBSD.org> +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.Dd November 12, 2025 +.Dt DTRACE_PRIV 4 +.Os +.Sh NAME +.Nm dtrace_priv +.Nd a DTrace provider for the kernel privilege checking API +.Sh SYNOPSIS +.Nm priv Ns Cm :kernel:priv_check:priv-ok +.Nm priv Ns Cm :kernel:priv_check:priv-err +.Sh DESCRIPTION +The +.Nm priv +provider allows for tracing the +.Xr priv 9 +API. +.Pp +The +.Nm priv Ns Cm :kernel:priv_check:priv-ok +probe fires upon a successful kernel privilege check. +.Pp +The +.Nm priv Ns Cm :kernel:priv_check:priv-err +probe fires upon a failed kernel privilege check. +.Pp +The only argument to the +.Nm priv +probes, +.Fa args[0] , +is the requested privilege number +.Ft int priv . +.Sh EXAMPLES +.Ss Example 1: Tracing Kernel Privilege Check Failures +The following script captures an array of counters, +one for each stack trace leading to a failed kernel privilege check: +.Bd -literal -offset 2n +priv:::priv-err +{ + @traces[stack()] = count(); +} +.Ed +.Sh SEE ALSO +.Xr dtrace 1 , +.Xr tracing 7 , +.Xr priv 9 , +.Xr SDT 9 +.Sh AUTHORS +.An -nosplit +The +.Nm priv +provider was written by +.An Robert N. M. Watson Aq Mt rwatson@FreeBSD.org . +.Pp +This manual page was written by +.An Mateusz Piotrowski Aq Mt 0mp@FreeBSD.org . diff --git a/share/man/man4/dtrace_vfs.4 b/share/man/man4/dtrace_vfs.4 new file mode 100644 index 000000000000..528d5da42f3d --- /dev/null +++ b/share/man/man4/dtrace_vfs.4 @@ -0,0 +1,97 @@ +.\" +.\" Copyright (c) 2025 Mateusz Piotrowski <0mp@FreeBSD.org> +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.Dd November 3, 2025 +.Dt DTRACE_VFS 4 +.Os +.Sh NAME +.Nm dtrace_vfs +.Nd a DTrace provider for Virtual File System +.Sh SYNOPSIS +.Sm off +.Nm vfs Cm : fplookup : Ar function Cm : Ar name +.Nm vfs Cm : namecache : Ar function Cm : Ar name +.Nm vfs Cm : namei : Ar function Cm : Ar name +.Nm vfs Cm : vop : Ar function Cm : Ar name +.Sm on +.Sh DESCRIPTION +The DTrace +.Nm vfs +provider allows users to trace events in the +.Xr VFS 9 +layer, the kernel interface for file systems on +.Fx . +.Pp +Run +.Ql dtrace -l -P vfs +to list all +.Nm vfs +probes. +Add +.Fl v +to generate program stability reports, +which contain information about the number of probe arguments and their types. +.Pp +The +.Cm fplookup +module defines a single probe, +.Fn vfs:fplookup:lookup:done "struct nameidata *ndp" "int line" "bool status_code" , +that instruments the fast path lookup code in +.Xr VFS 9 . +.Pp +The +.Cm namecache +module provides probes related to the +.Xr VFS 9 +cache. +Consult the source code in +.Pa src/sys/kern/vfs_cache.c +for more details. +.Pp +The +.Cm namei +module manages probes related to pathname translation and lookup operations. +Refer to +.Xr namei 9 +to learn more. +.Pp +The +.Cm vop +module contains probes related to the functions responsible for +.Xr vnode 9 +operations. +.Sh COMPATIBILITY +This provider is specific to +.Fx . +.Sh EXAMPLES +Check what lookups failed to be handled in a lockless manner: +.Bd -literal -offset 2n +# dtrace -n 'vfs:fplookup:lookup:done { @[arg1, arg2] = count(); }' +.Ed +.Sh SEE ALSO +.Xr dtrace 1 , +.Xr d 7 , +.Xr SDT 9 , +.Xr namei 9 , +.Xr VFS 9 +.Rs +.%A Brendan Gregg +.%A Jim Mauro +.%B DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD +.%I Prentice Hall +.%P pp. 335\(en351 +.%D 2011 +.%U https://www.brendangregg.com/dtracebook/ +.Re +.Sh AUTHORS +.An -nosplit +The +.Fx +.Nm vfs +provider was written by +.An Robert Watson Aq Mt rwatson@FreeBSD.org . +.Pp +This manual page was written by +.An Mateusz Piotrowski Aq Mt 0mp@FreeBSD.org . diff --git a/share/man/man4/epair.4 b/share/man/man4/epair.4 index 4bcb54c936cb..b406c423361b 100644 --- a/share/man/man4/epair.4 +++ b/share/man/man4/epair.4 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd March 18, 2015 +.Dd September 4, 2025 .Dt EPAIR 4 .Os .Sh NAME @@ -79,12 +79,24 @@ and Like any other Ethernet interface, an .Nm needs to have a network address. -Each +If the tunable +.Va net.link.epair.ether_gen_addr Ns +=0, each .Nm -will be assigned a locally administered address by default, +will be assigned a random locally administered address, that is only guaranteed to be unique within one network stack. -To change the default addresses one may use the SIOCSIFADDR ioctl(2) or -ifconfig(8) utility. +The tunable +.Va net.link.epair.ether_gen_addr Ns +=1 will generate a stable MAC address with +.Fx +OUI using +.Xr ether_gen_addr 9 . +This tunable defaults to 1 in +.Fx 15.0 and might be removed in +.Fx 16.0 . +To change the default addresses one may use the SIOCSIFADDR +.Xr ioctl 2 or +.Xr ifconfig 8 utility. .Pp The basic intent is to provide connectivity between two virtual network stack instances. @@ -96,6 +108,29 @@ As with any other Ethernet interface, can have a .Xr vlan 4 configured on top of it. +.Pp +The +.Nm +has RXCSUM and RXCSUM6 enabled because it may receive a packet where the +checksum has already been validated by a physical interface. +The +.Nm +supports TXCSUM and TXCSUM6 for TCP and UDP, but only by forwarding the order +to compute the checksum. +Thus, when using an +.Nm +interface, a TCP or UDP sender can offload checksum computation +to a physical interface. +Note that, in case the packet does not leave the host, the checksum is +unnecessary and will be ignored if offloaded. +Such packets contain an incorrect checksum, since it is not computed yet. +TXCSUM and TXCSUM6 are synchronized between the +.Nm +interface pair (i.e., enabling/disabling the capability on one end +enables/disables it on the other end). +In case one end is in a bridge and the bridge disabled TXCSUM or TXCSUM6, +this avoids a sender to send packets with checksum offloading into the +bridge by using the other end. .Sh SEE ALSO .Xr ioctl 2 , .Xr altq 4 , diff --git a/share/man/man4/exca.4 b/share/man/man4/exca.4 index 555e459b7db4..d43d359bfb25 100644 --- a/share/man/man4/exca.4 +++ b/share/man/man4/exca.4 @@ -33,5 +33,4 @@ The module is used to implement the Intel ExCA interface to PC Cards. .Sh SEE ALSO -.Xr pccbb 4 , -.Xr pcic 4 +.Xr pccbb 4 diff --git a/share/man/man4/fdc.4 b/share/man/man4/fdc.4 index 929baf3a234b..937be2077b26 100644 --- a/share/man/man4/fdc.4 +++ b/share/man/man4/fdc.4 @@ -25,7 +25,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd October 10, 2023 +.Dd November 16, 2025 .Dt FDC 4 .Os .Sh NAME @@ -47,6 +47,12 @@ In .Cd hint.fd.1.at="fdc0" .Cd hint.fd.1.drive="1" .Cd hint.fd.1.flags="0x0" +.Sh DEPRECATION NOTICE +The +.Nm +driver is deprecated and may not be present in +.Fx 16.0 +and later. .Sh DESCRIPTION .Ss Device Usage This driver provides access to floppy disk drives. @@ -350,13 +356,15 @@ Print when an unknown IOCTL is used. .El .It Dv debug.fdc.fifo For enhanced controllers, allows a non-default FIFO -threshold setting. The default is 8 bytes. +threshold setting. +The default is 8 bytes. .It Dv debug.fdc.retries -Maximum number of retries to attempt. The default is 10. +Maximum number of retries to attempt. +The default is 10. .It Dv debug.fdc.spec1 Specification byte one (step-rate + head unload). -The default step rate is 6 ms. The default head unload -time is 240 ms. +The default step rate is 6 ms. +The default head unload time is 240 ms. .It Dv debug.fdc.spec2 Specification byte two (head load time + no-dma). The default head load time is 16 ms, and no-dma is 0 diff --git a/share/man/man4/geom_zero.4 b/share/man/man4/geom_zero.4 new file mode 100644 index 000000000000..82e74618515f --- /dev/null +++ b/share/man/man4/geom_zero.4 @@ -0,0 +1,174 @@ +.\" +.\" Copyright (c) 2019 Greg White <gkwhite@gmail.com>. All rights reserved. +.\" Copyright (c) 2025 Mateusz Piotrowski <0mp@FreeBSD.org> +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.Dd November 9, 2025 +.Dt GEOM_ZERO 4 +.Os +.Sh NAME +.Nm gzero , +.Nm geom_zero +.Nd GEOM-based zero disk/block device +.Sh SYNOPSIS +.Cd "options GEOM_ZERO" +.Pp +In +.Xr loader.conf 5 +or +.Xr sysctl.conf 5 : +.Cd kern.geom.zero.byte +.Cd kern.geom.zero.clear +.Sh DESCRIPTION +.Nm +is a +.Xr GEOM 4 +device simulating a one-exabyte disk. +It throws away any data written to it, +and returns the value of +.Va kern.geom.zero.byte +for every byte read from it. +.Pp +.Nm +differs from +.Xr zero 4 , +which is a regular character device and has an infinite length, +while +.Pa /dev/gzero +is a +.Xr GEOM 4 +provider of large, but limited, size. +.Pp +Consult +.Xr geom 8 +for instructions on how to use the supported commands of the +.Xr GEOM 4 +.Nm ZERO +class. +.Pp +.Nm +is useful for benchmarking performance of GEOM and GEOM classes +where compression of the data does not affect the results +.Po blocks from +.Pa /dev/gzero +compress exceptionally well +.Pc . +Examples of such benchmarks include +comparing the speed of two disk encryption algorithms and +comparing a hardware versus software implementation +of a single encryption algorithm. +.Sh MIB VARIABLES +The following variables are available as both +.Xr sysctl 8 +variables and +.Xr loader 8 +tunables: +.Bl -tag -width "kern.geom.zero.clear" +.It Va kern.geom.zero.byte +This variable sets the fill byte of the +.Nm +device. +Default: +.Ql 0 . +.It Va kern.geom.zero.clear +This variable controls the clearing of the read data buffer. +If set to +.Ql 0 , +.Nm +will not copy any data into the read data buffers +and just return the read data buffers as they are without modifying them. +In particular, it will not fill the read buffer with the value of +.Va kern.geom.zero.byte . +This is useful for read benchmarking to reduce the measurement noise +caused by extra memory initialization. +Default: +.Ql 1 . +.El +.Sh FILES +.Bl -tag -width /dev/gzero +.It Pa /dev/gzero +The +.Nm +device. +.El +.Sh EXAMPLES +Create the +.Pa /dev/gzero +device by loading the +.Nm geom_zero +kernel module: +.Bd -literal -offset indent +# geom zero load +.Ed +.Pp +Show information about the +.Nm +device: +.Bd -literal -offset indent +# geom zero list +Geom name: gzero +Providers: +1. Name: gzero + Mediasize: 1152921504606846976 (1.0E) + Sectorsize: 512 + Mode: r0w0egzero0 +.Ed +.Pp +Set the fill byte of the +.Nm +device to 70 +.Po decimal for letter +.Dq F +in +.Xr ascii 7 +.Pc : +.Bd -literal -offset indent +# sysctl kern.geom.zero.byte=70 +kern.geom.zero.byte: 0 -> 70 +# head -c 1 /dev/gzero +F +.Ed +.Pp +Benchmark read and write throughput of +.Xr geli 8 Ap s +default encryption algorithm with a 4-KiB sector size: +.Bd -literal -offset indent +# geom zero load +# geli onetime -s 4096 gzero +# sysctl kern.geom.zero.clear=0 +# dd if=/dev/gzero.eli of=/dev/zero bs=4k count=$((1024 * 256)) +262144+0 records in +262144+0 records out +1073741824 bytes transferred in 1.258195 secs (853398307 bytes/sec) +# dd if=/dev/zero of=/dev/gzero.eli bs=4k count=$((1024 * 256)) +262144+0 records in +262144+0 records out +1073741824 bytes transferred in 1.663118 secs (645619658 bytes/sec) +.Ed +.Sh SEE ALSO +.Xr GEOM 4 , +.Xr zero 4 , +.Xr geom 8 , +.Xr sysctl 8 , +.Xr bio 9 +.Sh HISTORY +A +.Nm +device first appeared in +.Fx 6 . +.Sh AUTHORS +.An -nosplit +The +.Nm +device was written by +.An Paweł Jakub Dawidek Aq Mt pjd@FreeBSD.org . +.Pp +The +.Nm +manual page was originally written by +.An Greg White Aq Mt gkwhite@gmail.com +and rewritten by +.An Mateusz Piotrowski Aq Mt 0mp@FreeBSD.org +before landing in +.Fx . diff --git a/share/man/man4/gif.4 b/share/man/man4/gif.4 index ad33d5d21e81..cc12d91b72ea 100644 --- a/share/man/man4/gif.4 +++ b/share/man/man4/gif.4 @@ -28,7 +28,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd July 14, 2025 +.Dd August 27, 2025 .Dt GIF 4 .Os .Sh NAME @@ -55,6 +55,16 @@ does not perform GRE encapsulation; use .Xr gre 4 for GRE encapsulation. .Pp +The +.Nm +interface can also tunnel Ethernet traffic over IPv4 or IPv6 +when combined with a +.Xr if_bridge 4 +interface using EtherIP protocol. +See +.Xr if_bridge 4 +for detailed setup. +.Pp Each .Nm interface is created at runtime using interface cloning. @@ -316,6 +326,13 @@ to the desired level of nesting. .%D December 1999 .%O draft-ietf-ipsec-ecn-02.txt .Re +.Rs +.%A R. Housley +.%A S. Hollenbeck +.%T EtherIP: Tunneling Ethernet Frames in IP Datagrams +.%R RFC 3378 +.%D September 2002 +.Re .\" .Sh HISTORY The diff --git a/share/man/man4/gpio.4 b/share/man/man4/gpio.4 index 9a629ff402fd..b84bfb01de51 100644 --- a/share/man/man4/gpio.4 +++ b/share/man/man4/gpio.4 @@ -1,3 +1,6 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" .\" Copyright (c) 2013, Sean Bruno <sbruno@freebsd.org> .\" All rights reserved. .\" @@ -22,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd June 27, 2019 +.Dd August 28, 2025 .Dt GPIO 4 .Os .Sh NAME @@ -33,7 +36,6 @@ To compile these devices into your kernel and use the device hints, place the following lines in your kernel configuration file: .Bd -ragged -offset indent .Cd "device gpio" -.Cd "device gpioc" .Cd "device gpioiic" .Cd "device gpioled" .Ed diff --git a/share/man/man4/gpioled.4 b/share/man/man4/gpioled.4 index 646e2ff2a8f0..45457d20d298 100644 --- a/share/man/man4/gpioled.4 +++ b/share/man/man4/gpioled.4 @@ -70,7 +70,20 @@ Which pin on the GPIO interface to map to this instance. Please note that this mask should only ever have one bit set (any other bits - i.e., pins - will be ignored). .It Va hint.gpioled.%d.invert -If set to 1, the pin will be set to 0 to light the LED, and 1 to clear it. +Use pin inversion. If set to 1, the pin will be set to 0 to light the LED, and 1 +to clear it. +.It Va hint.gpioled.%d.invmode +Whether or not to use hardware support when pin inversion is requested. Must be +one of: +.Bl -tag +.It Va auto +Use hardware pin inversion if available, else fallback to software pin +inversion. This is the default. +.It Va hw +Use hardware pin inversion. +.It Va sw +Use software pin inversion. +.El .It Va hint.gpioled.%d.state The initial state of the LED when the driver takes control over it. If set to 1 or 0, the LED will be on or off correspondingly. diff --git a/share/man/man4/hgame.4 b/share/man/man4/hgame.4 index 3309833c1720..94ad4f5ff4a4 100644 --- a/share/man/man4/hgame.4 +++ b/share/man/man4/hgame.4 @@ -1,3 +1,6 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" .\" Copyright (c) 2020 Vladimir Kondratyev <wulf@FreeBSD.org> .\" .\" Redistribution and use in source and binary forms, with or without @@ -21,45 +24,62 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd September 14, 2020 +.Dd November 12, 2025 .Dt HGAME 4 .Os .Sh NAME .Nm hgame -.Nd Generic HID game controller (joystick/gamepad) driver +.Nd generic HID gamepad, joystick, and controller evdev driver .Sh SYNOPSIS -To compile this driver into the kernel, -place the following lines in your -kernel configuration file: -.Bd -ragged -offset indent -.Cd "device hgame" -.Cd "device hid" -.Cd "device hidbus" -.Cd "device hidmap" -.Cd "device evdev" -.Ed +.Cd device hgame +.Cd device hid +.Cd device hidbus +.Cd device hidmap +.Cd device evdev +.Pp +In +.Xr sysctl.conf 5 : +.Cd dev.hgame.X.debug .Pp -Alternatively, to load the driver as a -module at boot time, place the following line in +In .Xr loader.conf 5 : -.Bd -literal -offset indent -hgame_load="YES" -.Ed +.Cd hw.hid.hgame.debug +.Cd hgame_load .Sh DESCRIPTION The .Nm -driver provides support for generic game controllers (joysticks/gamepads) -that attach to the HID transport backend. -See -.Xr iichid 4 -or -.Xr usbhid 4 . +driver supports generic game controllers +that attach to the HID transport backend, +and presents them to applications over the +.Sy evdev +interface. .Pp -The +If the appropriate hardware is detected, +the driver will be loaded automatically by +.Xr devmatch 8 . +To load the driver manually at boot time, set the +.Va hgame_load +variable to +.Ar YES +at the +.Xr loader 8 +prompt, or add it to +.Xr loader.conf 5 . +.Pp +To give user applications access to the game controllers, +allow user access to the .Pa /dev/input/event* -device presents the game controller as a -.Ar evdev -type device. +nodes with +.Xr devfs.rules 5 . +.Sh HARDWARE +The +.Nm +driver supports HID gamepads, joysticks, and controllers such as: +.Pp +.Bl -bullet -compact +.It +8bitdo USB Wireless Adapter 2 +.El .Sh SYSCTL VARIABLES The following variable is available as both .Xr sysctl 8 @@ -68,25 +88,31 @@ variable and tunable: .Bl -tag -width indent .It Va dev.hgame.X.debug -Debug output level, where 0 is debugging disabled and larger values increase -debug message verbosity. +Debug output level, +where 0 is debugging disabled and +larger values increase debug message verbosity. Default is 0. .El .Pp -It's default value is set with +Its default value is set with .Xr loader 8 tunable: .Bl -tag -width indent .It Va hw.hid.hgame.debug .El .Sh FILES -.Bl -tag -width /dev/input/event* -compact +.Bl -tag -width "/dev/input/event*" -compact .It Pa /dev/input/event* -input event device node. +input event device +.Pq Sy evdev +node .El .Sh SEE ALSO .Xr iichid 4 , -.Xr usbhid 4 +.Xr ps4dshock 4 , +.Xr usbhid 4 , +.Xr xb360gp 4 , +.Xr devfs.rules 5 .Sh HISTORY The .Nm diff --git a/share/man/man4/hifn.4 b/share/man/man4/hifn.4 deleted file mode 100644 index 22494fcb6c6d..000000000000 --- a/share/man/man4/hifn.4 +++ /dev/null @@ -1,132 +0,0 @@ -.\" $OpenBSD: hifn.4,v 1.32 2002/09/26 07:55:40 miod Exp $ -.\" -.\" Copyright (c) 2000 Theo de Raadt -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -.\" DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, -.\" INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -.\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -.\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -.\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -.\" POSSIBILITY OF SUCH DAMAGE. -.\" -.Dd July 29, 2020 -.Dt HIFN 4 -.Os -.Sh NAME -.Nm hifn -.Nd Hifn 7751/7951/7811/7955/7956 crypto accelerator -.Sh SYNOPSIS -To compile this driver into the kernel, -place the following lines in your -kernel configuration file: -.Bd -ragged -offset indent -.Cd "device crypto" -.Cd "device cryptodev" -.Cd "device hifn" -.Ed -.Pp -Alternatively, to load the driver as a -module at boot time, place the following line in -.Xr loader.conf 5 : -.Bd -literal -offset indent -hifn_load="YES" -.Ed -.Sh DESCRIPTION -The -.Nm -driver supports various cards containing the Hifn 7751, 7951, -7811, 7955, and 7956 chipsets. -.Pp -The -.Nm -driver registers itself to accelerate -AES (7955 and 7956 only), -SHA1, and SHA1-HMAC operations for -.Xr ipsec 4 -and -.Xr crypto 4 . -.Pp -The Hifn -.Tn 7951 , -.Tn 7811 , -.Tn 7955 , -and -.Tn 7956 -will also supply data to the kernel -.Xr random 4 -subsystem. -.Sh HARDWARE -The -.Nm -driver supports various cards containing the Hifn 7751, 7951, -7811, 7955, and 7956 -chipsets, such as: -.Bl -tag -width namenamenamena -offset indent -.It Invertex AEON -No longer being made. -Came as 128KB SRAM model, or 2MB DRAM model. -.It Hifn 7751 -Reference board with 512KB SRAM. -.It PowerCrypt -Comes with 512KB SRAM. -.It XL-Crypt -Only board based on 7811 (which is faster than 7751 and has -a random number generator). -.It NetSec 7751 -Supports the most IPsec sessions, with 1MB SRAM. -.It Soekris Engineering vpn1201 and vpn1211 -See -.Pa http://www.soekris.com/ . -Contains a 7951 and supports symmetric and random number operations. -.It Soekris Engineering vpn1401 and vpn1411 -See -.Pa http://www.soekris.com/ . -Contains a 7955 and supports symmetric and random number operations. -.El -.Sh SEE ALSO -.Xr crypto 4 , -.Xr intro 4 , -.Xr ipsec 4 , -.Xr random 4 , -.Xr crypto 7 , -.Xr crypto 9 -.Sh HISTORY -The -.Nm -device driver appeared in -.Ox 2.7 . -The -.Nm -device driver was imported to -.Fx 5.0 . -.Sh CAVEATS -The Hifn 9751 shares the same PCI ID. -This chip is basically a 7751, but with the cryptographic functions missing. -Instead, the 9751 is only capable of doing compression. -Since we do not currently attempt to use any of these chips to do -compression, the 9751-based cards are not useful. -.Pp -Support for the 7955 and 7956 is incomplete; the asymmetric crypto -facilities are to be added and the performance is suboptimal. -.Sh BUGS -The 7751 chip starts out at initialization by only supporting compression. -A proprietary algorithm, which has been reverse engineered, is required to -unlock the cryptographic functionality of the chip. -It is possible for vendors to make boards which have a lock ID not known -to the driver, but all vendors currently just use the obvious ID which is -13 bytes of 0. diff --git a/share/man/man4/ice.4 b/share/man/man4/ice.4 index 3f7a9017756d..a54a6b3fd6f3 100644 --- a/share/man/man4/ice.4 +++ b/share/man/man4/ice.4 @@ -1,4 +1,4 @@ -.\"- +.\" .\" SPDX-License-Identifier: BSD-3-Clause .\" .\" Copyright (c) 2019-2020, Intel Corporation @@ -32,62 +32,105 @@ .\" .\" * Other names and brands may be claimed as the property of others. .\" -.Dd March 28, 2025 +.Dd November 5, 2025 .Dt ICE 4 .Os .Sh NAME .Nm ice -.Nd "Intel\(rg Ethernet 800 Series Driver" +.Nd Intel Ethernet 800 Series 1GbE to 200GbE driver .Sh SYNOPSIS -To compile this driver into the kernel, place the following lines in your -kernel configuration file: -.Bd -literal -offset indent .Cd device iflib .Cd device ice -.Ed .Pp -To load the driver as a module at boot time, place the following lines in +In .Xr loader.conf 5 : -.Bd -literal -offset indent -if_ice_load="YES" -.Ed +.Cd if_ice_load +.Cd hw.ice.enable_health_events +.Cd hw.ice.irdma +.Cd hw.ice.irdma_max_msix +.Cd hw.ice.debug.enable_tx_fc_filter +.Cd hw.ice.debug.enable_tx_lldp_filter +.Cd hw.ice.debug.ice_tx_balance_en +.Pp +In +.Xr sysctl.conf 5 +or +.Xr loader.conf 5 : +.Cd dev.ice.#.current_speed +.Cd dev.ice.#.fw_version +.Cd dev.ice.#.ddp_version +.Cd dev.ice.#.pba_number +.Cd dev.ice.#.hw.mac.* .Sh DESCRIPTION -.Ss Features The .Nm driver provides support for any PCI Express adapter or LOM -(LAN On Motherboard) -in the Intel\(rg Ethernet 800 Series. -As of this writing, the series includes devices with these model numbers: +.Pq LAN On Motherboard +in the Intel Ethernet 800 Series. +.Pp +The following topics are covered in this manual: .Pp .Bl -bullet -compact .It -Intel\(rg Ethernet Controller E810\-C +.Sx Features +.It +.Sx Dynamic Device Personalization +.It +.Sx Jumbo Frames +.It +.Sx Remote Direct Memory Access +.It +.Sx RDMA Monitoring +.It +.Sx Data Center Bridging +.It +.Sx L3 QoS Mode +.It +.Sx Firmware Link Layer Discovery Protocol Agent +.It +.Sx Link-Level Flow Control +.It +.Sx Forward Error Correction .It -Intel\(rg Ethernet Controller E810\-XXV +.Sx Speed and Duplex Configuration .It -Intel\(rg Ethernet Connection E822\-C +.Sx Disabling physical link when the interface is brought down .It -Intel\(rg Ethernet Connection E822\-L +.Sx Firmware Logging .It -Intel\(rg Ethernet Connection E823\-C +.Sx Debug Dump .It -Intel\(rg Ethernet Connection E823\-L +.Sx Debugging PHY Statistics .It -Intel\(rg Ethernet Connection E825\-C +.Sx Transmit Balancing .It -Intel\(rg Ethernet Connection E830\-C +.Sx Thermal Monitoring .It -Intel\(rg Ethernet Connection E830\-CC +.Sx Network Memory Buffer Allocation .It -Intel\(rg Ethernet Connection E830\-L +.Sx Additional Utilities .It -Intel\(rg Ethernet Connection E830\-XXV +.Sx Optics and auto-negotiation +.It +.Sx PCI-Express Slot Bandwidth +.It +.Sx HARDWARE +.It +.Sx LOADER TUNABLES +.It +.Sx SYSCTL VARIABLES +.It +.Sx INTERRUPT STORMS +.It +.Sx IOVCTL OPTIONS +.It +.Sx SUPPORT +.It +.Sx SEE ALSO +.It +.Sx HISTORY .El -.Pp -For questions related to hardware requirements, refer to the documentation -supplied with your adapter. -.Pp +.Ss Features Support for Jumbo Frames is provided via the interface MTU setting. Selecting an MTU larger than 1500 bytes with the .Xr ifconfig 8 @@ -131,21 +174,20 @@ downloading a new driver or DDP package. Safe Mode only applies to the affected physical function and does not impact any other PFs. See the -.Dq Intel\(rg Ethernet Adapters and Devices User Guide +.Dq Intel Ethernet Adapters and Devices User Guide for more details on DDP and Safe Mode. .Pp -If you encounter issues with the DDP package file, you may need to download -an updated driver or +If issues are encountered with the DDP package file, an updated driver or .Sy ice_ddp -module. +module may need to be downloaded. See the log messages for more information. .Pp -You cannot update the DDP package if any PF drivers are already loaded. +The DDP package cannot be updated if any PF drivers are already loaded. To overwrite a package, unload all PFs and then reload the driver with the new package. .Pp -You can only use one DDP package per driver, even if you have more than one -device installed that uses the driver. +Only one DDP package can be used per driver, +even if more than one installed device uses the driver. .Pp Only the first loaded PF per device can download a package for that device. .Ss Jumbo Frames @@ -164,9 +206,9 @@ each jumbo packet. This should help to avoid buffer starvation issues when allocating receive packets. .Pp -Packet loss may have a greater impact on throughput when you use jumbo -frames. -If you observe a drop in performance after enabling jumbo frames, enabling +Packet loss may have a greater impact on throughput when jumbo frames are in +use. +If a drop in performance is observed after enabling jumbo frames, enabling flow control may mitigate the issue. .Ss Remote Direct Memory Access Remote Direct Memory Access, or RDMA, allows a network device to transfer data @@ -178,20 +220,20 @@ RoCEv2 (RDMA over Converged Ethernet) protocols. The major difference is that iWARP performs RDMA over TCP, while RoCEv2 uses UDP. .Pp -Devices based on the Intel\(rg Ethernet 800 Series do not support RDMA when +Devices based on the Intel Ethernet 800 Series do not support RDMA when operating in multiport mode with more than 4 ports. .Pp For detailed installation and configuration information for RDMA, see .Xr irdma 4 . .Ss RDMA Monitoring -For debugging/testing purposes, you can use sysctl to set up a mirroring +For debugging/testing purposes, a sysctl can be used to set up a mirroring interface on a port. The interface can receive mirrored RDMA traffic for packet analysis tools like .Xr tcpdump 1 . This mirroring may impact performance. .Pp -To use RDMA monitoring, you may need to reserve more MSI\-X interrupts. +To use RDMA monitoring, more MSI-X interrupts may need to be reserved. Before the .Nm driver loads, configure the following tunable provided by @@ -200,7 +242,7 @@ driver loads, configure the following tunable provided by dev.ice.<interface #>.iflib.use_extra_msix_vectors=4 .Ed .Pp -You may need to adjust the number of extra MSI\-X interrupt vectors. +The number of extra MSI-X interrupt vectors may need to be adjusted. .Pp To create/delete the interface: .Bd -literal -offset indent @@ -236,14 +278,15 @@ DCB is normally configured on the network using the DCBX protocol (802.1Qaz), a specialization of LLDP (802.1AB). The .Nm driver supports the following mutually exclusive variants of DCBX support: +.Pp .Bl -bullet -compact .It -Firmware\-based LLDP Agent +Firmware-based LLDP Agent .It -Software\-based LLDP Agent +Software-based LLDP Agent .El .Pp -In firmware\-based mode, firmware intercepts all LLDP traffic and handles DCBX +In firmware-based mode, firmware intercepts all LLDP traffic and handles DCBX negotiation transparently for the user. In this mode, the adapter operates in .Dq willing @@ -253,30 +296,30 @@ The local user can only query the negotiated DCB configuration. For information on configuring DCBX parameters on a switch, please consult the switch manufacturer'ss documentation. .Pp -In software\-based mode, LLDP traffic is forwarded to the network stack and user +In software-based mode, LLDP traffic is forwarded to the network stack and user space, where a software agent can handle it. In this mode, the adapter can operate in .Dq nonwilling DCBX mode and DCB configuration can be both queried and set locally. -This mode requires the FW\-based LLDP Agent to be disabled. +This mode requires the FW-based LLDP Agent to be disabled. .Pp -Firmware\-based mode and software\-based mode are controlled by the +Firmware-based mode and software-based mode are controlled by the .Dq fw_lldp_agent sysctl. Refer to the Firmware Link Layer Discovery Protocol Agent section for more information. .Pp -Link\-level flow control and priority flow control are mutually exclusive. +Link-level flow control and priority flow control are mutually exclusive. The ice driver will disable link flow control when priority flow control is enabled on any traffic class (TC). It will disable priority flow control when link flow control is enabled. .Pp -To enable/disable priority flow control in software\-based DCBX mode: +To enable/disable priority flow control in software-based DCBX mode: .Bd -literal -offset indent sysctl dev.ice.<interface #>.pfc=1 (or 0 to disable) .Ed .Pp -Enhanced Transmission Selection (ETS) allows you to assign bandwidth to certain +Enhanced Transmission Selection (ETS) allows bandwidth to be assigned to certain TCs, to help ensure traffic reliability. To view the assigned ETS configuration, use the following: .Bd -literal -offset indent @@ -298,10 +341,10 @@ For example, to map UP 0 and 1 to TC 0, UP 2 and 3 to TC 1, UP 4 and .Bd -literal -offset indent sysctl dev.ice.<interface #>.up2tc_map=0,0,1,1,2,2,3,3 .Ed -.Ss L3 QoS mode +.Ss L3 QoS Mode The .Nm -driver supports setting DSCP\-based Layer 3 Quality of Service (L3 QoS) +driver supports setting DSCP-based Layer 3 Quality of Service (L3 QoS) in the PF driver. The driver initializes in L2 QoS mode by default; L3 QoS is disabled by default. @@ -310,13 +353,13 @@ Use the following sysctl to enable or disable L3 QoS: sysctl dev.ice.<interface #>.pfc_mode=1 (or 0 to disable) .Ed .Pp -If you disable L3 QoS mode, it returns to L2 QoS mode. +If L3 QoS mode is disabled, it returns to L2 QoS mode. .Pp To map a DSCP value to a traffic class, separate the values by commas. -For example, to map DSCPs 0\-3 and DSCP 8 to DCB TCs 0\-3 and 4, respectively: +For example, to map DSCPs 0-3 and DSCP 8 to DCB TCs 0-3 and 4, respectively: .Bd -literal -offset indent -sysctl dev.ice.<interface #>.dscp2tc_map.0\-7=0,1,2,3,0,0,0,0 -sysctl dev.ice.<interface #>.dscp2tc_map.8\-15=4,0,0,0,0,0,0,0 +sysctl dev.ice.<interface #>.dscp2tc_map.0-7=0,1,2,3,0,0,0,0 +sysctl dev.ice.<interface #>.dscp2tc_map.8-15=4,0,0,0,0,0,0,0 .Ed .Pp To change the DSCP mapping back to the default traffic class, set all the @@ -327,25 +370,25 @@ To view the currently configured mappings, use the following: sysctl dev.ice.<interface #>.dscp2tc_map .Ed .Pp -L3 QoS mode is not available when FW\-LLDP is enabled. +L3 QoS mode is not available when FW-LLDP is enabled. .Pp -You also cannot enable FW\-LLDP if L3 QoS mode is active. +FW-LLDP cannot be enabled if L3 QoS mode is active. .Pp -Disable FW\-LLDP before switching to L3 QoS mode. +Disable FW-LLDP before switching to L3 QoS mode. .Pp Refer to the .Sx Firmware Link Layer Discovery Protocol Agent -section in this README for more information on disabling FW\-LLDP. +section in this README for more information on disabling FW-LLDP. .Ss Firmware Link Layer Discovery Protocol Agent -Use sysctl to change FW\-LLDP settings. -The FW\-LLDP setting is per port and persists across boots. +Use sysctl to change FW-LLDP settings. +The FW-LLDP setting is per port and persists across boots. .Pp -To enable the FW\-LLDP Agent: +To enable the FW-LLDP Agent: .Bd -literal -offset indent sysctl dev.ice.<interface #>.fw_lldp_agent=1 .Ed .Pp -To disable the FW\-LLDP Agebt: +To disable the FW-LLDP Agebt: .Bd -literal -offset indent sysctl dev.ice.<interface #>.fw_lldp_agent=0 .Ed @@ -355,15 +398,18 @@ To check the current LLDP setting: sysctl dev.ice.<interface #>.fw_lldp_agent .Ed .Pp -You must enable the UEFI HII LLDP Agent attribute for this setting +The UEFI HII LLDP Agent attribute must be enabled for this setting to take effect. If the .Dq LLDP AGENT -attribute is set to disabled, you cannot enable the FW\-LLDP Agent from the +attribute is set to disabled, the FW-LLDP Agent cannot be enabled from the driver. -.Ss Link\-Level Flow Control (LFC) -Ethernet Flow Control (IEEE 802.3x) can be configured with sysctl to enable -receiving and transmitting pause frames for +.Ss Link-Level Flow Control +Ethernet Flow Control +.Pq IEEE 802.3x or LFC +can be configured with +.Xr sysctl 8 +to enable receiving and transmitting pause frames for .Nm . When transmit is enabled, pause frames are generated when the receive packet buffer crosses a predefined threshold. @@ -416,16 +462,16 @@ provide a stable link without FEC. .Pp For devices to benefit from this feature, link partners must have FEC enabled. .Pp -If you enable the sysctl -.Em allow_no_fec_modules_in_auto -Auto FEC negotiation will include +If the +.Va allow_no_fec_modules_in_auto +sysctl is enabled Auto FEC negotiation will include .Dq No FEC -in case your link partner does not have FEC enabled or is not FEC capable: +in case the link partner does not have FEC enabled or is not FEC capable: .Bd -literal -offset indent sysctl dev.ice.<interface #>.allow_no_fec_modules_in_auto=1 .Ed .Pp -NOTE: This flag is currently not supported on the Intel\(rg Ethernet 830 +NOTE: This flag is currently not supported on the Intel Ethernet 830 Series. .Pp To show the current FEC settings that are negotiated on the link: @@ -440,32 +486,32 @@ sysctl dev.ice.<interface #>.requested_fec .Pp To see the valid FEC modes for the link: .Bd -literal -offset indent -sysctl \-d dev.ice.<interface #>.requested_fec +sysctl -d dev.ice.<interface #>.requested_fec .Ed .Ss Speed and Duplex Configuration -You cannot set duplex or autonegotiation settings. +The speed and duplex settings cannot be hard set. .Pp -To have your device change the speeds it will use in auto-negotiation or +To have the device change the speeds it will use in auto-negotiation or force link with: .Bd -literal -offset indent sysctl dev.ice.<interface #>.advertise_speed=<mask> .Ed .Pp Supported speeds will vary by device. -Depending on the speeds your device supports, valid bits used in a speed mask +Depending on the speeds the device supports, valid bits used in a speed mask could include: .Bd -literal -offset indent -0x0 \- Auto -0x2 \- 100 Mbps -0x4 \- 1 Gbps -0x8 \- 2.5 Gbps -0x10 \- 5 Gbps -0x20 \- 10 Gbps -0x80 \- 25 Gbps -0x100 \- 40 Gbps -0x200 \- 50 Gbps -0x400 \- 100 Gbps -0x800 \- 200 Gbps +0x0 - Auto +0x2 - 100 Mbps +0x4 - 1 Gbps +0x8 - 2.5 Gbps +0x10 - 5 Gbps +0x20 - 10 Gbps +0x80 - 25 Gbps +0x100 - 40 Gbps +0x200 - 50 Gbps +0x400 - 100 Gbps +0x800 - 200 Gbps .Ed .Ss Disabling physical link when the interface is brought down When the @@ -485,7 +531,7 @@ The driver allows for the generation of firmware logs for supported categories of events, to help debug issues with Customer Support. Refer to the -.Dq Intel\(rg Ethernet Adapters and Devices User Guide +.Dq Intel Ethernet Adapters and Devices User Guide for an overview of this feature and additional tips. .Pp At a high level, to capture a firmware log: @@ -493,13 +539,13 @@ At a high level, to capture a firmware log: .It Set the configuration for the firmware log. .It -Perform the necessary steps to generate the issue you are trying to debug. +Perform the necessary steps to reproduce the issue. .It Capture the firmware log. .It Stop capturing the firmware log. .It -Reset your firmware log settings as needed. +Reset the firmware log settings as needed. .It Work with Customer Support to debug the issue. .El @@ -544,7 +590,7 @@ DCBx (Bit 11) .It Va dcb DCB (Bit 12) .It Va xlr -XLR (function\-level resets; Bit 13) +XLR (function-level resets; Bit 13) .It Va nvm NVM (Bit 14) .It Va auth @@ -552,7 +598,7 @@ Authentication (Bit 15) .It Va vpd Vital Product Data (Bit 16) .It Va iosf -Intel On\-Chip System Fabric (Bit 17) +Intel On-Chip System Fabric (Bit 17) .It Va parser Parser (Bit 18) .It Va sw @@ -583,8 +629,8 @@ PF Registration (Bit 30) Module Version (Bit 31) .El .Pp -You can change the verbosity level of the firmware logs. -You can set only one log level per module, and each level includes the +The verbosity level of the firmware logs can be modified. +It is possible to set only one log level per module, and each level includes the verbosity levels lower than it. For instance, setting the level to .Dq normal @@ -640,8 +686,8 @@ dmesg > log_output NOTE: Logging a large number of modules or too high of a verbosity level will add extraneous messages to dmesg and could hinder debug efforts. .Ss Debug Dump -Intel\(rg Ethernet 800 Series devices support debug dump, which allows you to -obtain runtime register values from the firmware for +Intel Ethernet 800 Series devices support debug dump, +which allows gathering of runtime register values from the firmware for .Dq clusters of events and then write the results to a single dump file, for debugging complicated issues in the field. @@ -653,8 +699,8 @@ Debug dump captures the current state of the specified cluster(s) and is a stateless snapshot of the whole device. .Pp NOTE: Like with firmware logs, the contents of the debug dump are not -human\-readable. -You must work with Customer Support to decode the file. +human-readable. +Work with Customer Support to decode the file. .Pp Debug dump is per device, not per PF. .Pp @@ -676,7 +722,7 @@ pass the argument. For example: .Bd -literal -offset indent -sysctl \-d dev.ice.0.debug.dump.clusters +sysctl -d dev.ice.0.debug.dump.clusters .Ed .Pp Possible bitmask values for @@ -684,24 +730,24 @@ Possible bitmask values for are: .Bl -bullet -compact .It -0 \- Dump all clusters (only supported on Intel\(rg Ethernet E810 Series and -Intel\(rg Ethernet E830 Series) +0 - Dump all clusters (only supported on Intel Ethernet E810 Series and +Intel Ethernet E830 Series) .It -0x1 \- Switch +0x1 - Switch .It -0x2 \- ACL +0x2 - ACL .It -0x4 \- Tx Scheduler +0x4 - Tx Scheduler .It -0x8 \- Profile Configuration +0x8 - Profile Configuration .It -0x20 \- Link +0x20 - Link .It -0x80 \- DCB +0x80 - DCB .It -0x100 \- L2P +0x100 - L2P .It -0x400000 \- Manageability Transactions (only supported on Intel\(rg Ethernet +0x400000 - Manageability Transactions (only supported on Intel Ethernet E810 Series) .El .Pp @@ -717,20 +763,19 @@ sysctl dev.ice.0.debug.dump.clusters=0 .Pp NOTE: Using 0 will skip Manageability Transactions data. .Pp -If you don't specify a cluster, the driver will dump all clusters to a -single file. +If a single cluster is not specified, +the driver will dump all clusters to a single file. Issue the debug dump command, using the following: .Bd -literal -offset indent -sysctl \-b dev.ice.<interface #>.debug.dump.dump=1 > dump.bin +sysctl -b dev.ice.<interface #>.debug.dump.dump=1 > dump.bin .Ed .Pp -NOTE: The driver will not receive the command if you do not write -.Dq 1 -to the sysctl. +NOTE: The driver will not receive the command if the sysctl is not set to +.Dq 1 . .Pp Replace .Dq dump.bin -above with the file name you want to use. +above with the preferred file name. .Pp To clear the .Va clusters @@ -744,7 +789,7 @@ The ice driver supports the ability to obtain the values of the PHY registers from Intel(R) Ethernet 810 Series devices in order to debug link and connection issues during runtime. .Pp -The driver allows you to obtain information about: +The driver provides information about: .Bl -bullet .It Rx and Tx Equalization parameters @@ -757,13 +802,13 @@ Use the following sysctl to read the PHY registers: sysctl dev.ice.<interface #>.debug.phy_statistics .Ed .Pp -NOTE: The contents of the registers are not human\-readable. -Like with firmware logs and debug dump, you must work with Customer Support +NOTE: The contents of the registers are not human-readable. +Like with firmware logs and debug dump, work with Customer Support to decode the file. .Ss Transmit Balancing -Some Intel(R) Ethernet 800 Series devices allow you to enable a transmit +Some Intel(R) Ethernet 800 Series devices allow for enabling a transmit balancing feature to improve transmit performance under certain conditions. -When the feature is enabled, you should experience more consistent transmit +When enabled, this feature should provide more consistent transmit performance across queues and/or PFs and VFs. .Pp By default, transmit balancing is disabled in the NVM. @@ -784,7 +829,7 @@ configures the device accordingly. .Pp NOTE: The user selection for transmit balancing in EPCT or HII is persistent across reboots. -You must reboot the system for the selected setting to take effect. +The system must be rebooted for the selected setting to take effect. .Pp This setting is device wide. .Pp @@ -801,7 +846,7 @@ sysctl dev.ice.<interface #>.temp may have a low number of network memory buffers (mbufs) by default. If the number of mbufs available is too low, it may cause the driver to fail to initialize and/or cause the system to become unresponsive. -You can check to see if the system is mbuf\-starved by running +Check to see if the system is mbuf-starved by running .Ic netstat Fl m . Increase the number of mbufs by editing the lines below in .Pa /etc/sysctl.conf : @@ -813,8 +858,8 @@ kern.ipc.nmbjumbo16 kern.ipc.nmbufs .Ed .Pp -The amount of memory that you allocate is system specific, and may require some -trial and error. +The amount of memory that should be allocated is system specific, +and may require some trial and error. Also, increasing the following in .Pa /etc/sysctl.conf could help increase network performance: @@ -839,13 +884,91 @@ To change the behavior of the QSFP28 ports on E810-C adapters, use the Intel To update the firmware on an adapter, use the Intel .Sy Non-Volatile Memory (NVM) Update Utility for Intel Ethernet Network Adapters E810 series - FreeBSD .El +.Ss Optics and auto-negotiation +Modules based on 100GBASE-SR4, +active optical cable (AOC), and active copper cable (ACC) +do not support auto-negotiation per the IEEE specification. +To obtain link with these modules, +auto-negotiation must be turned off on the link partner's switch ports. +.Pp +Note that adapters also support +all passive and active limiting direct attach cables +that comply with SFF-8431 v4.1 and SFF-8472 v10.4 specifications. +.Ss PCI-Express Slot Bandwidth +Some PCIe x8 slots are actually configured as x4 slots. +These slots have insufficient bandwidth +for full line rate with dual port and quad port devices. +In addition, +if a PCIe v4.0 or v3.0-capable adapter is placed into into a PCIe v2.x +slot, full bandwidth will not be possible. +.Pp +The driver detects this situation and +writes the following message in the system log: +.Bd -ragged -offset indent +PCI-Express bandwidth available for this device +may be insufficient for optimal performance. +Please move the device to a different PCI-e link +with more lanes and/or higher transfer rate. +.Ed +.Pp +If this error occurs, +moving the adapter to a true PCIe x8 or x16 slot will resolve the issue. +For best performance, install devices in the following PCI slots: +.Bl -bullet +.It +Any 100Gbps-capable Intel(R) Ethernet 800 Series device: Install in a +PCIe v4.0 x8 or v3.0 x16 slot +.It +A 200Gbps-capable Intel(R) Ethernet 830 Series device: Install in a +PCIe v5.0 x8 or v4.0 x16 slot +.El +.Pp +For questions related to hardware requirements, +refer to the documentation supplied with the adapter. .Sh HARDWARE The .Nm -driver supports the Intel Ethernet 800 series. -Some adapters in this series with SFP28/QSFP28 cages -have firmware that requires that Intel qualified modules are used; these -qualified modules are listed below. +driver supports the following +Intel 800 series 1Gb to 200Gb Ethernet controllers: +.Pp +.Bl -bullet -compact +.It +Intel Ethernet Controller E810-C +.It +Intel Ethernet Controller E810-XXV +.It +Intel Ethernet Connection E822-C +.It +Intel Ethernet Connection E822-L +.It +Intel Ethernet Connection E823-C +.It +Intel Ethernet Connection E823-L +.It +Intel Ethernet Connection E825-C +.It +Intel Ethernet Connection E830-C +.It +Intel Ethernet Connection E830-CC +.It +Intel Ethernet Connection E830-L +.It +Intel Ethernet Connection E830-XXV +.It +Intel Ethernet Connection E835-C +.It +Intel Ethernet Connection E835-CC +.It +Intel Ethernet Connection E835-L +.It +Intel Ethernet Connection E835-XXV +.El +.Pp +The +.Nm +driver supports some adapters in this series with SFP28/QSFP28 cages +which have firmware that requires that Intel qualified modules are used; +these qualified modules are listed below. This qualification check cannot be disabled by the driver. .Pp The @@ -854,13 +977,13 @@ driver supports 100Gb Ethernet adapters with these QSFP28 modules: .Pp .Bl -bullet -compact .It -Intel\(rg 100G QSFP28 100GBASE-SR4 E100GQSFPSR28SRX +Intel 100G QSFP28 100GBASE-SR4 E100GQSFPSR28SRX .It -Intel\(rg 100G QSFP28 100GBASE-SR4 SPTMBP1PMCDF +Intel 100G QSFP28 100GBASE-SR4 SPTMBP1PMCDF .It -Intel\(rg 100G QSFP28 100GBASE-CWDM4 SPTSBP3CLCCO +Intel 100G QSFP28 100GBASE-CWDM4 SPTSBP3CLCCO .It -Intel\(rg 100G QSFP28 100GBASE-DR SPTSLP2SLCDF +Intel 100G QSFP28 100GBASE-DR SPTSLP2SLCDF .El .Pp The @@ -869,11 +992,11 @@ driver supports 25Gb and 10Gb Ethernet adapters with these SFP28 modules: .Pp .Bl -bullet -compact .It -Intel\(rg 10G/25G SFP28 25GBASE-SR E25GSFP28SR +Intel 10G/25G SFP28 25GBASE-SR E25GSFP28SR .It -Intel\(rg 25G SFP28 25GBASE-SR E25GSFP28SRX (Extended Temp) +Intel 25G SFP28 25GBASE-SR E25GSFP28SRX (Extended Temp) .It -Intel\(rg 25G SFP28 25GBASE-LR E25GSFP28LRX (Extended Temp) +Intel 25G SFP28 25GBASE-LR E25GSFP28LRX (Extended Temp) .El .Pp The @@ -882,54 +1005,15 @@ driver supports 10Gb and 1Gb Ethernet adapters with these SFP+ modules: .Pp .Bl -bullet -compact .It -Intel\(rg 1G/10G SFP+ 10GBASE-SR E10GSFPSR -.It -Intel\(rg 1G/10G SFP+ 10GBASE-SR E10GSFPSRG1P5 -.It -Intel\(rg 1G/10G SFP+ 10GBASE-SR E10GSFPSRG2P5 +Intel 1G/10G SFP+ 10GBASE-SR E10GSFPSR .It -Intel\(rg 10G SFP+ 10GBASE-SR E10GSFPSRX (Extended Temp) +Intel 1G/10G SFP+ 10GBASE-SR E10GSFPSRG1P5 .It -Intel\(rg 1G/10G SFP+ 10GBASE-LR E10GSFPLR -.El -.Pp -Note that adapters also support all passive and active -limiting direct attach cables that comply with SFF-8431 v4.1 and -SFF-8472 v10.4 specifications. -.Pp -This is not an exhaustive list; please consult product documentation for an -up-to-date list of supported media. -.Ss Fiber optics and auto\-negotiation -Modules based on 100GBASE\-SR4, active optical cable (AOC), and active copper -cable (ACC) do not support auto\-negotiation per the IEEE specification. -To obtain link with these modules, auto\-negotiation must be turned off on the -link partner's switch ports. -.Ss PCI-Express Slot Bandwidth -Some PCIe x8 slots are actually configured as x4 slots. -These slots have insufficient bandwidth for full line rate with dual port and -quad port devices. -In addition, if you put a PCIe v4.0 or v3.0\-capable adapter into a PCIe v2.x -slot, you cannot get full bandwidth. -.Pp -The driver detects this situation and writes the following message in the -system log: -.Bd -literal -offset indent -PCI\-Express bandwidth available for this device may be insufficient for -optimal performance. -Please move the device to a different PCI\-e link with more lanes and/or -higher transfer rate. -.Ed -.Pp -If this error occurs, moving your adapter to a true PCIe x8 or x16 slot will -resolve the issue. -For best performance, install devices in the following PCI slots: -.Bl -bullet +Intel 1G/10G SFP+ 10GBASE-SR E10GSFPSRG2P5 .It -Any 100Gbps\-capable Intel(R) Ethernet 800 Series device: Install in a -PCIe v4.0 x8 or v3.0 x16 slot +Intel 10G SFP+ 10GBASE-SR E10GSFPSRX (Extended Temp) .It -A 200Gbps\-capable Intel(R) Ethernet 830 Series device: Install in a -PCIe v5.0 x8 or v4.0 x16 slot +Intel 1G/10G SFP+ 10GBASE-LR E10GSFPLR .El .Sh LOADER TUNABLES Tunables can be set at the @@ -1027,11 +1111,11 @@ on. Disabled by default. .It num-queues Pq uint16_t Specify the number of queues the VF will have. -By default, this is set to the number of MSI\-X vectors supported by the VF +By default, this is set to the number of MSI-X vectors supported by the VF minus one. .It mirror-src-vsi Pq uint16_t Specify which VSI the VF will mirror traffic from by setting this to a value -other than \-1. +other than -1. All traffic from that VSI will be mirrored to this VF. Can be used as an alternative method to mirror RDMA traffic to another interface than the method described in the diff --git a/share/man/man4/iflib.4 b/share/man/man4/iflib.4 index 0114263e6ca2..2040698f0087 100644 --- a/share/man/man4/iflib.4 +++ b/share/man/man4/iflib.4 @@ -1,4 +1,4 @@ -.Dd September 27, 2018 +.Dd August 20, 2025 .Dt IFLIB 4 .Os .Sh NAME @@ -64,6 +64,18 @@ If this is zero or not set, an RX and TX queue pair will be assigned to each core. When set to a non-zero value, TX queues are assigned to cores following the last RX queue. +.It Va simple_tx +When set to one, iflib uses a simple transmit routine with no queuing at all. +By default, iflib uses a highly optimized, lockless, transmit queue called +mp_ring. +This performs well when there are more CPU cores than NIC +queues and prevents lock contention for transmit resources. +Unfortunately, mp_ring incurs unneeded overheads on workloads where +resource contention is not a problem (well behaved applications on +systems where there are as many NIC queues as CPU cores). +Note that when this is enabled, the tx_abdicate sysctl is no longer +applicable and is ignored. +Defaults to zero. .El .Pp These diff --git a/share/man/man4/ioat.4 b/share/man/man4/ioat.4 index deef466c0ae0..1c0e1dd49fd1 100644 --- a/share/man/man4/ioat.4 +++ b/share/man/man4/ioat.4 @@ -23,7 +23,7 @@ .\" SUCH DAMAGE. .\" .Dd May 3, 2016 -.Dt IOAT 4 +.Dt IOAT 4 amd64 .Os .Sh NAME .Nm I/OAT diff --git a/share/man/man4/ip.4 b/share/man/man4/ip.4 index c52715a43380..fb5ea398c840 100644 --- a/share/man/man4/ip.4 +++ b/share/man/man4/ip.4 @@ -575,7 +575,7 @@ is the following structure: .Bd -literal struct ip_mreqn { struct in_addr imr_multiaddr; /* IP multicast address of group */ - struct in_addr imr_interface; /* local IP address of interface */ + struct in_addr imr_address; /* local IP address of interface */ int imr_ifindex; /* interface index */ } .Ed diff --git a/share/man/man4/isp.4 b/share/man/man4/isp.4 index 6fea63fdd5d5..a8f985a59d09 100644 --- a/share/man/man4/isp.4 +++ b/share/man/man4/isp.4 @@ -85,7 +85,7 @@ It may be disabled using configuration and hint options described below. .Sh HARDWARE The .Nm -driver supports the following optical Fibre Chanel adapters: +driver supports the following optical Fibre Channel adapters: .Bl -column "Qlogic 2690/2692/2694 (2684/2692)" "Speed" "PCI-X" .It Model: Ta Speed: Ta Bus: .It Qlogic QLE2874 (2814) Ta 64Gb Ta PCIe diff --git a/share/man/man4/iwlwifi.4 b/share/man/man4/iwlwifi.4 index 4a251f239a55..411af54be9fb 100644 --- a/share/man/man4/iwlwifi.4 +++ b/share/man/man4/iwlwifi.4 @@ -27,7 +27,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd June 13, 2025 +.Dd August 19, 2025 .Dt IWLWIFI 4 .Os .Sh NAME @@ -284,7 +284,7 @@ module parameters and are mapped automatically by .Sy linuxkpi . They were not adjusted so that they stay consistent with upstream Linux, e.g., for documentation available and problem investigations. -This left their names inconsistent between themselves and incosistent to +This left their names inconsistent between themselves and inconsistent to .Fx style. .Pp @@ -331,7 +331,7 @@ driver first appeared in 802.11n and 802.11ac support for the 22000 and later chipsets first appeared in .Fx 14.3 . .Sh BUGS -Certainly. +.Lk https://bugs.freebsd.org/bugzilla/showdependencytree.cgi?id=iwlwifi "iwlwifi known bugs" .Pp While .Nm diff --git a/share/man/man4/iwx.4 b/share/man/man4/iwx.4 index 7cd54d61b920..5f978b210f78 100644 --- a/share/man/man4/iwx.4 +++ b/share/man/man4/iwx.4 @@ -17,24 +17,27 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd May 2, 2025 -.Dt IWX 4 +.Dd November 14, 2025 +.Dt IWX 4 amd64 .Os .Sh NAME .Nm iwx .Nd Intel WiFi 6 IEEE 802.11ax wireless network driver .Sh SYNOPSIS -.Cd device iwx -.Cd device wlan +To compile this driver into the kernel, +include the following lines in your kernel configuration file: +.Bd -ragged -offset indent +.Cd "device iwx" +.Cd "device pci" +.Cd "device wlan" +.Ed .Pp -In -.Xr rc.conf 5 : -.Cd devmatch_blocklist="if_iwlwifi" -.Cd kld_list="if_iwx" -.Pp -In -.Xr sysctl.conf 5 : -.Cd dev.iwx.?.debug=0xffffffff +Alternatively, to load the driver as a +module at boot time, place the following lines in +.Xr loader.conf 5 : +.Bd -literal -offset indent +if_iwx_load="YES" +.Ed .Sh DESCRIPTION The .Nm diff --git a/share/man/man4/ix.4 b/share/man/man4/ix.4 index 418b6e1188ab..09af85f5c4a7 100644 --- a/share/man/man4/ix.4 +++ b/share/man/man4/ix.4 @@ -29,7 +29,7 @@ .\" .\" * Other names and brands may be claimed as the property of others. .\" -.Dd October 26, 2024 +.Dd November 10, 2025 .Dt IX 4 .Os .Sh NAME @@ -78,6 +78,8 @@ including: .Pp .Bl -bullet -compact .It +Intel(R) Ethernet E610 +.It Intel(R) Ethernet X553 .It Intel(R) Ethernet X552 @@ -130,6 +132,35 @@ Enable Adaptive Interrupt Moderation (AIM). Vary the interrupt rate over time based on the traffic for that interrupt vector. .El +.Sh SYSCTL VARIABLES +The +.Nm +driver supports the following +.Xr sysctl 8 +variables: +.Bl -tag -width "dev.ix.?.debug.dump.clusters" +.It Va dev.ix.?.debug.dump.clusters +Specify a bitmask to select firmware event clusters +to be included in the debug dump. +Possible values include: +.Pp +.Bl -tag -compact +.It 0 +All clusters excluding Manageability Transactions +.It 0x1 +Link cluster +.It 0x2 +Full CSR Space excluding RCW registers +.El +.Pp +This feature is only supported on E610 devices. +.It Va dev.ix.?.debug.dump.dump +Specify 1 to generate a per-device debugging snapshot. +Output must be redirected to a file +and decoded by Intel Customer Support. +.Pp +This feature is only supported on E610. +.El .Sh DIAGNOSTICS .Bl -diag .It "ix%d: Unable to allocate bus resource: memory" diff --git a/share/man/man4/le.4 b/share/man/man4/le.4 index ff39361a1780..04b57633c91f 100644 --- a/share/man/man4/le.4 +++ b/share/man/man4/le.4 @@ -34,7 +34,7 @@ .\" .\" from: Header: le.4,v 1.2 92/10/13 05:31:33 leres Exp .\" -.Dd June 21, 2023 +.Dd October 24, 2025 .Dt LE 4 .Os .Sh NAME @@ -66,7 +66,7 @@ numbers have to be specified in The .Nm driver may not be present in -.Fx 15.0 +.Fx 16.0 and later. .Sh DESCRIPTION The diff --git a/share/man/man4/linprocfs.4 b/share/man/man4/linprocfs.4 index 53940d7c02b0..dcd1c642b409 100644 --- a/share/man/man4/linprocfs.4 +++ b/share/man/man4/linprocfs.4 @@ -9,7 +9,7 @@ .Nd Linux process file system .Sh SYNOPSIS .Bd -literal -linproc /compat/linux/proc linprocfs rw 0 0 +linprocfs /compat/linux/proc linprocfs rw 0 0 .Ed .Sh DESCRIPTION The Linux process file system, or @@ -138,7 +138,7 @@ To mount a file system on .Pa /compat/linux/proc : .Pp -.Dl "mount -t linprocfs linproc /compat/linux/proc" +.Dl "mount -t linprocfs linprocfs /compat/linux/proc" .Sh SEE ALSO .Xr mount 2 , .Xr unmount 2 , diff --git a/share/man/man4/linsysfs.4 b/share/man/man4/linsysfs.4 index 12729a814085..045e1af89173 100644 --- a/share/man/man4/linsysfs.4 +++ b/share/man/man4/linsysfs.4 @@ -9,7 +9,7 @@ .Nd Linux kernel objects file system .Sh SYNOPSIS .Bd -literal -linsys /compat/linux/sys linsysfs rw 0 0 +linsysfs /compat/linux/sys linsysfs rw 0 0 .Ed .Sh DESCRIPTION The @@ -66,7 +66,7 @@ The PCI device hierarchy node. .Sh EXAMPLES The most common usage follows: .Pp -.Dl "mount -t linsysfs linsys /compat/linux/sys" +.Dl "mount -t linsysfs linsysfs /compat/linux/sys" .Pp where .Pa /compat/linux/sys diff --git a/share/man/man4/mac_do.4 b/share/man/man4/mac_do.4 index 4dcb54c89673..d02932070e25 100644 --- a/share/man/man4/mac_do.4 +++ b/share/man/man4/mac_do.4 @@ -94,8 +94,10 @@ i.e., one of the literal strings or .Ql gid . .Li Aq id -must be the numerical ID of a user or group, and is matched with the current -process real ID of the corresponding type. +must be the numerical ID of a user or group and is matched against the current +process real ID of the corresponding type, and on type +.Ql gid +additionally against the supplementary groups. .Ss Rule's Ao to Ac Part The second part of a rule, .Li Aq to , @@ -244,7 +246,7 @@ nor contradictory ones. In practice, no two clauses may display the same ID except for group IDs but only if, each time the same ID appears, it does so with a different flag, or no flags only once. -Additionally, the specified flags in multiple occurences must not be +Additionally, the specified flags in multiple occurrences must not be contradictory. For example, the same group ID appearing with both .Ql + @@ -377,8 +379,8 @@ Same as the first example, but lifting any constraints on groups, allowing the process to become part of any groups it sees fit. .El .Pp -Here are several examples of single rules matching processes having a real group -ID of 10001: +Here are several examples of single rules matching processes having 10001 as +their real group IDs or in their supplementary groups: .Bl -tag -width indent .It Li gid=10001>uid=0 Makes 10001 a more powerful diff --git a/share/man/man4/man4.aarch64/Makefile b/share/man/man4/man4.aarch64/Makefile index 0e85aab8b770..f35558d69a33 100644 --- a/share/man/man4/man4.aarch64/Makefile +++ b/share/man/man4/man4.aarch64/Makefile @@ -14,12 +14,6 @@ MAN= \ # for all architectures, otherwise arm takes care of installing them. .if !empty(MAN_ARCH) && ${MAN_ARCH} != "all" MAN+= \ - aw_gpio.4 \ - aw_mmc.4 \ - aw_rtc.4 \ - aw_sid.4 \ - aw_spi.4 \ - aw_syscon.4 \ bcm283x_pwm.4 \ .endif diff --git a/share/man/man4/man4.aarch64/armv8crypto.4 b/share/man/man4/man4.aarch64/armv8crypto.4 index 7b8704395daf..0f763adc5766 100644 --- a/share/man/man4/man4.aarch64/armv8crypto.4 +++ b/share/man/man4/man4.aarch64/armv8crypto.4 @@ -25,7 +25,7 @@ .\" SUCH DAMAGE. .\" .Dd July 29, 2020 -.Dt ARMV8CRYPTO 4 +.Dt ARMV8CRYPTO 4 aarch64 .Os .Sh NAME .Nm armv8crypto diff --git a/share/man/man4/man4.aarch64/enetc.4 b/share/man/man4/man4.aarch64/enetc.4 index 33f796347f96..e7cfcb7ebe0e 100644 --- a/share/man/man4/man4.aarch64/enetc.4 +++ b/share/man/man4/man4.aarch64/enetc.4 @@ -25,7 +25,7 @@ .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .Dd June 11, 2021 -.Dt ENETC 4 +.Dt ENETC 4 aarch64 .Os .Sh NAME .Nm enetc diff --git a/share/man/man4/man4.aarch64/felix.4 b/share/man/man4/man4.aarch64/felix.4 index 15caef6d274f..b97f3c2168e8 100644 --- a/share/man/man4/man4.aarch64/felix.4 +++ b/share/man/man4/man4.aarch64/felix.4 @@ -26,7 +26,7 @@ .\" SUCH DAMAGE. .\" .Dd June 21, 2021 -.Dt FELIX 4 +.Dt FELIX 4 aarch64 .Os .Sh NAME .Nm felix diff --git a/share/man/man4/man4.aarch64/rk_gpio.4 b/share/man/man4/man4.aarch64/rk_gpio.4 index b5648662cf5e..b2767dd66dce 100644 --- a/share/man/man4/man4.aarch64/rk_gpio.4 +++ b/share/man/man4/man4.aarch64/rk_gpio.4 @@ -23,7 +23,7 @@ .\" SUCH DAMAGE. .\" .Dd Apr 26, 2018 -.Dt RK_GPIO 4 +.Dt RK_GPIO 4 aarch64 .Os .Sh NAME .Nm rk_gpio diff --git a/share/man/man4/man4.aarch64/rk_grf.4 b/share/man/man4/man4.aarch64/rk_grf.4 index 64ed468c1983..b01a93091ecb 100644 --- a/share/man/man4/man4.aarch64/rk_grf.4 +++ b/share/man/man4/man4.aarch64/rk_grf.4 @@ -23,7 +23,7 @@ .\" SUCH DAMAGE. .\" .Dd Apr 26, 2018 -.Dt RK_GRF 4 +.Dt RK_GRF 4 aarch64 .Os .Sh NAME .Nm rk_grf diff --git a/share/man/man4/man4.aarch64/rk_grf_gpio.4 b/share/man/man4/man4.aarch64/rk_grf_gpio.4 index 6a5ebbe19e3b..2bfbebce1b76 100644 --- a/share/man/man4/man4.aarch64/rk_grf_gpio.4 +++ b/share/man/man4/man4.aarch64/rk_grf_gpio.4 @@ -4,7 +4,7 @@ .\" SPDX-License-Identifier: BSD-2-Clause .\" .Dd March 18, 2025 -.Dt RK_GRF_GPIO 4 +.Dt RK_GRF_GPIO 4 aarch64 .Os .Sh NAME .Nm rk_grf_gpio diff --git a/share/man/man4/man4.aarch64/rk_i2c.4 b/share/man/man4/man4.aarch64/rk_i2c.4 index be1a0fab943e..363cdeac7f72 100644 --- a/share/man/man4/man4.aarch64/rk_i2c.4 +++ b/share/man/man4/man4.aarch64/rk_i2c.4 @@ -25,7 +25,7 @@ .\" SUCH DAMAGE. .\" .Dd June 14, 2018 -.Dt RK_I2C 4 +.Dt RK_I2C 4 aarch64 .Os .Sh NAME .Nm rk_i2c diff --git a/share/man/man4/man4.aarch64/rk_pinctrl.4 b/share/man/man4/man4.aarch64/rk_pinctrl.4 index 519b3e793cd1..2be5f363498d 100644 --- a/share/man/man4/man4.aarch64/rk_pinctrl.4 +++ b/share/man/man4/man4.aarch64/rk_pinctrl.4 @@ -23,7 +23,7 @@ .\" SUCH DAMAGE. .\" .Dd Apr 26, 2018 -.Dt RK_PINCTRL 4 +.Dt RK_PINCTRL 4 aarch64 .Os .Sh NAME .Nm rk_pinctrl diff --git a/share/man/man4/man4.arm/Makefile b/share/man/man4/man4.arm/Makefile index 6b046a1002a2..2be255ad913f 100644 --- a/share/man/man4/man4.arm/Makefile +++ b/share/man/man4/man4.arm/Makefile @@ -1,11 +1,5 @@ MAN= \ ar40xx.4 \ - aw_gpio.4 \ - aw_mmc.4 \ - aw_rtc.4 \ - aw_sid.4 \ - aw_spi.4 \ - aw_syscon.4 \ bcm283x_pwm.4 \ devcfg.4 \ imx6_ahci.4 \ diff --git a/share/man/man4/man4.arm/am335x_dmtpps.4 b/share/man/man4/man4.arm/am335x_dmtpps.4 index d565c65e2cf1..bec5ff7726a0 100644 --- a/share/man/man4/man4.arm/am335x_dmtpps.4 +++ b/share/man/man4/man4.arm/am335x_dmtpps.4 @@ -24,7 +24,7 @@ .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .Dd August 12, 2015 -.Dt AM335X_DMTPPS 4 +.Dt AM335X_DMTPPS 4 arm .Os .Sh NAME .Nm am335x_dmtpps diff --git a/share/man/man4/man4.arm/bcm283x_pwm.4 b/share/man/man4/man4.arm/bcm283x_pwm.4 index 1fb5a830ace7..71d7f0cc3cca 100644 --- a/share/man/man4/man4.arm/bcm283x_pwm.4 +++ b/share/man/man4/man4.arm/bcm283x_pwm.4 @@ -25,7 +25,7 @@ .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .Dd September 10, 2018 -.Dt BCM283X_PWM 4 +.Dt BCM283X_PWM 4 arm .Os .Sh NAME .Nm bcm283x_pwm diff --git a/share/man/man4/man4.arm/devcfg.4 b/share/man/man4/man4.arm/devcfg.4 index ddf368a85f24..cbc205814c69 100644 --- a/share/man/man4/man4.arm/devcfg.4 +++ b/share/man/man4/man4.arm/devcfg.4 @@ -23,7 +23,7 @@ .\" SUCH DAMAGE. .\" .Dd February 28, 2013 -.Dt DEVCFG 4 +.Dt DEVCFG 4 arm .Os .Sh NAME .Nm devcfg diff --git a/share/man/man4/man4.arm/imx6_ahci.4 b/share/man/man4/man4.arm/imx6_ahci.4 index 9979cef50d79..50689e323db8 100644 --- a/share/man/man4/man4.arm/imx6_ahci.4 +++ b/share/man/man4/man4.arm/imx6_ahci.4 @@ -24,7 +24,7 @@ .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .Dd July 7, 2018 -.Dt IMX6_AHCI 4 +.Dt IMX6_AHCI 4 arm .Os .Sh NAME .Nm imx6_ahci diff --git a/share/man/man4/man4.arm/imx6_snvs.4 b/share/man/man4/man4.arm/imx6_snvs.4 index b36c3ddd91c1..2c1db97b231c 100644 --- a/share/man/man4/man4.arm/imx6_snvs.4 +++ b/share/man/man4/man4.arm/imx6_snvs.4 @@ -24,7 +24,7 @@ .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .Dd July 8, 2018 -.Dt IMX6_SNVS 4 +.Dt IMX6_SNVS 4 arm .Os .Sh NAME .Nm imx6_snvs diff --git a/share/man/man4/man4.arm/imx_spi.4 b/share/man/man4/man4.arm/imx_spi.4 index e7555ed20d94..54a5339e3276 100644 --- a/share/man/man4/man4.arm/imx_spi.4 +++ b/share/man/man4/man4.arm/imx_spi.4 @@ -24,7 +24,7 @@ .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .Dd July 9, 2018 -.Dt IMX_SPI 4 +.Dt IMX_SPI 4 arm .Os .Sh NAME .Nm imx_spi diff --git a/share/man/man4/man4.arm/imx_wdog.4 b/share/man/man4/man4.arm/imx_wdog.4 index 4b993e1d066b..cb4d0e13865b 100644 --- a/share/man/man4/man4.arm/imx_wdog.4 +++ b/share/man/man4/man4.arm/imx_wdog.4 @@ -24,7 +24,7 @@ .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .Dd July 7, 2018 -.Dt IMX_WDOG 4 +.Dt IMX_WDOG 4 arm .Os .Sh NAME .Nm imx_wdog diff --git a/share/man/man4/man4.arm/mge.4 b/share/man/man4/man4.arm/mge.4 index e949b36f4307..cba9327eadcf 100644 --- a/share/man/man4/man4.arm/mge.4 +++ b/share/man/man4/man4.arm/mge.4 @@ -24,7 +24,7 @@ .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .Dd November 27, 2008 -.Dt MGE 4 +.Dt MGE 4 arm .Os .Sh NAME .Nm mge diff --git a/share/man/man4/man4.arm/ti_adc.4 b/share/man/man4/man4.arm/ti_adc.4 index d71547231e4c..fb59e1d3e57c 100644 --- a/share/man/man4/man4.arm/ti_adc.4 +++ b/share/man/man4/man4.arm/ti_adc.4 @@ -23,7 +23,7 @@ .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .Dd June 1, 2014 -.Dt TI_ADC 4 +.Dt TI_ADC 4 arm .Os .Sh NAME .Nm ti_adc diff --git a/share/man/man4/man4.powerpc/abtn.4 b/share/man/man4/man4.powerpc/abtn.4 index 92d643d5cf32..7421d0a0b5a6 100644 --- a/share/man/man4/man4.powerpc/abtn.4 +++ b/share/man/man4/man4.powerpc/abtn.4 @@ -25,7 +25,7 @@ .\" POSSIBILITY OF SUCH DAMAGE. .\" .Dd October 16, 2011 -.Dt ABTN 4 +.Dt ABTN 4 powerpc .Os .Sh NAME .Nm abtn diff --git a/share/man/man4/man4.powerpc/adb.4 b/share/man/man4/man4.powerpc/adb.4 index a781787995ab..6041484b5e33 100644 --- a/share/man/man4/man4.powerpc/adb.4 +++ b/share/man/man4/man4.powerpc/adb.4 @@ -24,7 +24,7 @@ .\" POSSIBILITY OF SUCH DAMAGE. .\" .Dd December 3, 2009 -.Dt ADB 4 +.Dt ADB 4 powerpc .Os .Sh NAME .Nm adb diff --git a/share/man/man4/man4.powerpc/akbd.4 b/share/man/man4/man4.powerpc/akbd.4 index 44af08961122..3406f5a1aa76 100644 --- a/share/man/man4/man4.powerpc/akbd.4 +++ b/share/man/man4/man4.powerpc/akbd.4 @@ -24,7 +24,7 @@ .\" POSSIBILITY OF SUCH DAMAGE. .\" .Dd December 3, 2009 -.Dt AKBD 4 +.Dt AKBD 4 powerpc .Os .Sh NAME .Nm akbd diff --git a/share/man/man4/man4.powerpc/ams.4 b/share/man/man4/man4.powerpc/ams.4 index 21be3c098920..d7fa922e7307 100644 --- a/share/man/man4/man4.powerpc/ams.4 +++ b/share/man/man4/man4.powerpc/ams.4 @@ -24,7 +24,7 @@ .\" POSSIBILITY OF SUCH DAMAGE. .\" .Dd December 3, 2009 -.Dt AMS 4 +.Dt AMS 4 powerpc .Os .Sh NAME .Nm ams diff --git a/share/man/man4/man4.powerpc/cuda.4 b/share/man/man4/man4.powerpc/cuda.4 index 7171ebb42373..a52b9a447c9d 100644 --- a/share/man/man4/man4.powerpc/cuda.4 +++ b/share/man/man4/man4.powerpc/cuda.4 @@ -24,7 +24,7 @@ .\" POSSIBILITY OF SUCH DAMAGE. .\" .Dd December 3, 2009 -.Dt CUDA 4 +.Dt CUDA 4 powerpc .Os .Sh NAME .Nm cuda diff --git a/share/man/man4/man4.powerpc/dtsec.4 b/share/man/man4/man4.powerpc/dtsec.4 index 4a60dd0b8824..f18de90c4757 100644 --- a/share/man/man4/man4.powerpc/dtsec.4 +++ b/share/man/man4/man4.powerpc/dtsec.4 @@ -24,7 +24,7 @@ .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .Dd October 31, 2017 -.Dt DTSEC 4 +.Dt DTSEC 4 powerpc .Os .Sh NAME .Nm dtsec diff --git a/share/man/man4/man4.powerpc/llan.4 b/share/man/man4/man4.powerpc/llan.4 index c32ddbca6a00..b78109cac626 100644 --- a/share/man/man4/man4.powerpc/llan.4 +++ b/share/man/man4/man4.powerpc/llan.4 @@ -24,7 +24,7 @@ .\" POSSIBILITY OF SUCH DAMAGE. .\" .Dd February 19, 2015 -.Dt LLAN 4 +.Dt LLAN 4 powerpc .Os .Sh NAME .Nm llan diff --git a/share/man/man4/man4.powerpc/pmu.4 b/share/man/man4/man4.powerpc/pmu.4 index 6eac20cfa6b7..4dfb31f175bd 100644 --- a/share/man/man4/man4.powerpc/pmu.4 +++ b/share/man/man4/man4.powerpc/pmu.4 @@ -24,7 +24,7 @@ .\" POSSIBILITY OF SUCH DAMAGE. .\" .Dd December 6, 2008 -.Dt PMU 4 +.Dt PMU 4 powerpc .Os .Sh NAME .Nm pmu diff --git a/share/man/man4/man4.powerpc/smu.4 b/share/man/man4/man4.powerpc/smu.4 index ef2654746e62..852a08abaa9e 100644 --- a/share/man/man4/man4.powerpc/smu.4 +++ b/share/man/man4/man4.powerpc/smu.4 @@ -24,7 +24,7 @@ .\" POSSIBILITY OF SUCH DAMAGE. .\" .Dd February 22, 2010 -.Dt SMU 4 +.Dt SMU 4 powerpc .Os .Sh NAME .Nm smu diff --git a/share/man/man4/man4.powerpc/snd_ai2s.4 b/share/man/man4/man4.powerpc/snd_ai2s.4 index 3880751e65c9..7a3cd9cb94af 100644 --- a/share/man/man4/man4.powerpc/snd_ai2s.4 +++ b/share/man/man4/man4.powerpc/snd_ai2s.4 @@ -24,7 +24,7 @@ .\" POSSIBILITY OF SUCH DAMAGE. .\" .Dd January 20, 2009 -.Dt SND_AI2S 4 +.Dt SND_AI2S 4 powerpc .Os .Sh NAME .Nm snd_ai2s diff --git a/share/man/man4/man4.powerpc/snd_davbus.4 b/share/man/man4/man4.powerpc/snd_davbus.4 index 6958ebd4b4b5..028225accf52 100644 --- a/share/man/man4/man4.powerpc/snd_davbus.4 +++ b/share/man/man4/man4.powerpc/snd_davbus.4 @@ -24,7 +24,7 @@ .\" POSSIBILITY OF SUCH DAMAGE. .\" .Dd January 20, 2009 -.Dt SND_DAVBUS 4 +.Dt SND_DAVBUS 4 powerpc .Os .Sh NAME .Nm snd_davbus diff --git a/share/man/man4/man4.powerpc/tsec.4 b/share/man/man4/man4.powerpc/tsec.4 index b3ccae648ab8..09510e329ff0 100644 --- a/share/man/man4/man4.powerpc/tsec.4 +++ b/share/man/man4/man4.powerpc/tsec.4 @@ -24,7 +24,7 @@ .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .Dd February 20, 2015 -.Dt TSEC 4 +.Dt TSEC 4 powerpc .Os .Sh NAME .Nm tsec diff --git a/share/man/man4/mgb.4 b/share/man/man4/mgb.4 index cf0f7aaa688d..0d26951d1b1e 100644 --- a/share/man/man4/mgb.4 +++ b/share/man/man4/mgb.4 @@ -49,7 +49,7 @@ For more information on configuring this device, see .Sh HARDWARE The .Nm -driver supports: +driver supports Microchip PCIe Gigabit Ethernet interfaces, including: .Pp .Bl -bullet -compact .It diff --git a/share/man/man4/miibus.4 b/share/man/man4/miibus.4 index f53abdb405f2..9291d3d84adc 100644 --- a/share/man/man4/miibus.4 +++ b/share/man/man4/miibus.4 @@ -86,11 +86,11 @@ NVIDIA nForce MCP Networking Adapter .It Xr nge 4 National Semiconductor DP83820/DP83821 Gigabit Ethernet .It Xr re 4 -RealTek 8139C+/8169/8169S/8110S +Realtek 8139C+/8169/8169S/8110S .It Xr rl 4 -RealTek 8129/8139 +Realtek 8129/8139 .It Xr rue 4 -RealTek RTL8150 USB To Fast Ethernet +Realtek RTL8150 USB To Fast Ethernet .It Xr sge 4 Silicon Integrated Systems SiS190/191 Ethernet .It Xr sis 4 @@ -106,7 +106,7 @@ Sundance/Tamarack TC9021 Gigabit Ethernet .It Xr udav 4 Davicom DM9601 USB Ethernet .It Xr ure 4 -RealTek RTL8152 USB To Fast Ethernet +Realtek RTL8152 USB To Fast Ethernet .It Xr vge 4 VIA VT612x PCI Gigabit Ethernet .It Xr vr 4 diff --git a/share/man/man4/mmcsd.4 b/share/man/man4/mmcsd.4 index 7466bc546b91..07d7e963b596 100644 --- a/share/man/man4/mmcsd.4 +++ b/share/man/man4/mmcsd.4 @@ -1,4 +1,6 @@ .\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" .\" Copyright (c) 2007 M. Warner Losh <imp@FreeBSD.org> .\" .\" Redistribution and use in source and binary forms, with or without @@ -21,7 +23,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd June 10, 2021 +.Dd October 2, 2025 .Dt MMCSD 4 .Os .Sh NAME @@ -29,7 +31,7 @@ .Nd MMC and SD memory card driver .Sh SYNOPSIS .Cd device mmcsd -.Sh DESCRIPTION +.Sh HARDWARE The .Nm driver implements direct access block device for MMC and SD memory cards. @@ -42,3 +44,8 @@ driver implements direct access block device for MMC and SD memory cards. .Rs .%T "The MultiMediaCard System Specification" .Re +.Sh HISTORY +The +.Nm +driver appeared in +.Fx 7.0 . diff --git a/share/man/man4/mpr.4 b/share/man/man4/mpr.4 index e114ecfd077b..a88b99ae007b 100644 --- a/share/man/man4/mpr.4 +++ b/share/man/man4/mpr.4 @@ -37,7 +37,7 @@ .\" .\" $Id$ .\" -.Dd June 1, 2019 +.Dd September 28, 2025 .Dt MPR 4 .Os .Sh NAME @@ -65,9 +65,9 @@ Fusion-MPT 3/3.5 IT/IR .Tn SAS/PCIe controllers. .Sh HARDWARE -These controllers are supported by the +The .Nm -driver: +driver supports the following SATA/SAS/NVMe RAID controllers: .Pp .Bl -bullet -compact .It @@ -99,6 +99,8 @@ Broadcom Ltd./Avago Tech (LSI) SAS 3708 (8 Port SAS/PCIe) .It Broadcom Ltd./Avago Tech (LSI) SAS 3716 (16 Port SAS/PCIe) .It +Broadcom Ltd./Avago Tech (LSI) SAS 3808 (8 Port SAS/PCIe) +.It Broadcom Ltd./Avago Tech (LSI) SAS 3816 (16 Port SAS/PCIe) .It Broadcom Ltd./Avago Tech (LSI) SAS 3916 (16 Port SAS/PCIe) diff --git a/share/man/man4/mrsas.4 b/share/man/man4/mrsas.4 index 36e9a7b5c7e7..5f7a0e6e45ea 100644 --- a/share/man/man4/mrsas.4 +++ b/share/man/man4/mrsas.4 @@ -1,3 +1,6 @@ +.\" +.\" SPDX-License-Identifier: BSD-3-Clause +.\" .\" Copyright (c) 2014 LSI Corp .\" All rights reserved. .\" Author: Kashyap Desai @@ -32,43 +35,42 @@ .\" are those of the authors and should not be interpreted as representing .\" official policies, either expressed or implied, of the FreeBSD Project. .\" -.Dd February 4, 2021 +.Dd August 22, 2025 .Dt MRSAS 4 .Os .Sh NAME .Nm mrsas -.Nd "LSI MegaRAID 6Gb/s and 12Gb/s SAS+SATA RAID controller driver" +.Nd Broadcom/LSI MegaRAID 6/12Gb/s SAS+SATA RAID controller driver .Sh SYNOPSIS -To compile this driver into the kernel, -place the following lines in your -kernel configuration file: -.Bd -ragged -offset indent .Cd "device pci" .Cd "device mrsas" -.Ed .Pp -Alternatively, to load the driver as a -module at boot time, place the following line in +In .Xr loader.conf 5 : -.Bd -literal -offset indent -mrsas_load="YES" -.Ed +.Cd mrsas_load="YES" +.Pp +In +.Xr sysctl.conf 5 : +.Cd dev.mrsas.X.disable_ocr +.Cd dev.mrsas.X.fw_outstanding +.Cd dev.mrsas.X.mrsas_fw_fault_check_delay +.Cd dev.mrsas.X.mrsas_io_timeout +.Cd hw.mrsas.X.debug_level .Sh DESCRIPTION The .Nm -driver will detect LSI's next generation (6Gb/s and 12Gb/s) PCI Express -SAS/SATA RAID controllers. -See the -.Nm HARDWARE -section for the supported devices list. -A disk (virtual disk/physical disk) attached to the +driver will detect Broadcom/LSI's 6Gb/s and 12Gb/s +PCI Express SAS/SATA/NVMe RAID controllers. +A disk +.Pq virtual disk/physical disk +attached to the .Nm driver will be visible to the user through .Xr camcontrol 8 as .Pa /dev/da? device nodes. -A simple management interface is also provided on a per-controller basis via the +A simple management interface is also provided per-controller via the .Pa /dev/mrsas? device node. .Pp @@ -77,8 +79,7 @@ The name is derived from the phrase "MegaRAID SAS HBA", which is substantially different than the old "MegaRAID" Driver .Xr mfi 4 -which does not connect targets -to the +which does not connect targets to the .Xr cam 4 layer and thus requires a new driver which attaches targets to the .Xr cam 4 @@ -91,8 +92,8 @@ but both the .Xr mfi 4 and .Nm -drivers can detect and manage the LSI MegaRAID SAS 2208/2308/3008/3108 series of -controllers. +drivers can detect and manage the +Broadcom/LSI MegaRAID SAS 2208/2308/3008/3108 series of controllers. .Pp The .Xr device.hints 5 @@ -103,7 +104,7 @@ By default, the .Xr mfi 4 driver will detect these controllers. See the -.Nm PRIORITY +.Sx PRIORITY section to know more about driver priority for MR-Fusion devices. .Pp .Nm @@ -124,46 +125,32 @@ rather then JBOD virtual mode. .Sh HARDWARE The .Nm -driver supports the following hardware: -.Pp -[ Thunderbolt 6Gb/s MR controller ] -.Bl -bullet -compact -.It -LSI MegaRAID SAS 9265 -.It -LSI MegaRAID SAS 9266 -.It -LSI MegaRAID SAS 9267 -.It -LSI MegaRAID SAS 9270 -.It -LSI MegaRAID SAS 9271 -.It -LSI MegaRAID SAS 9272 -.It -LSI MegaRAID SAS 9285 -.It -LSI MegaRAID SAS 9286 -.It -DELL PERC H810 -.It -DELL PERC H710/P -.El +driver supports the following LSI/Broadcom SATA/SAS RAID controllers: .Pp -[ Invader/Fury 12Gb/s MR controller ] -.Bl -bullet -compact -.It -LSI MegaRAID SAS 9380 -.It -LSI MegaRAID SAS 9361 -.It -LSI MegaRAID SAS 9341 -.It -DELL PERC H830 -.It -DELL PERC H730/P -.It -DELL PERC H330 +.Bl -column -compact "LSI MegaRAID SAS 9380" "Invader/Fury" "12Gb/s" +.It Controller Ta Chip Ta Speed +.It Broadcom SAS3916 Ta Aero Ta 12Gb/s +.It Broadcom SAS3908 Ta Aero Ta 12Gb/s +.It LSI MegaRAID SAS 9380 Ta Invader/Fury Ta 12Gb/s +.It LSI MegaRAID SAS 9361 Ta Invader/Fury Ta 12Gb/s +.It LSI MegaRAID SAS 9341 Ta Invader/Fury Ta 12Gb/s +.It LSI MegaRAID SAS 9286 Ta Thunderbolt Ta 6Gb/s +.It LSI MegaRAID SAS 9285 Ta Thunderbolt Ta 6Gb/s +.It LSI MegaRAID SAS 9272 Ta Thunderbolt Ta 6Gb/s +.It LSI MegaRAID SAS 9271 Ta Thunderbolt Ta 6Gb/s +.It LSI MegaRAID SAS 9270 Ta Thunderbolt Ta 6Gb/s +.It LSI MegaRAID SAS 9267 Ta Thunderbolt Ta 6Gb/s +.It LSI MegaRAID SAS 9266 Ta Thunderbolt Ta 6Gb/s +.It LSI MegaRAID SAS 9265 Ta Thunderbolt Ta 6Gb/s +.It LSI SAS 3108 Ta Ta 12Gb/s +.It LSI SAS 3008 Ta Ta 12Gb/s +.It LSI SAS 2308 Ta Ta 6Gb/s +.It LSI SAS 2208 Ta Ta 6Gb/s +.It DELL PERC H830 Ta Invader/Fury Ta 12Gb/s +.It DELL PERC H810 Ta Thunderbolt Ta 6Gb/s +.It DELL PERC H730/P Ta Invader/Fury Ta 12Gb/s +.It DELL PERC H710/P Ta Thunderbolt Ta 6Gb/s +.It DELL PERC H330 Ta Invader/Fury Ta 12Gb/s .El .Sh CONFIGURATION To disable Online Controller Reset(OCR) for a specific @@ -171,9 +158,8 @@ To disable Online Controller Reset(OCR) for a specific driver instance, set the following tunable value in .Xr loader.conf 5 : -.Bd -literal -offset indent -dev.mrsas.X.disable_ocr=1 -.Ed +.Pp +.Dl Va dev.mrsas.X.disable_ocr=1 .Pp where X is the adapter number. .Pp @@ -181,9 +167,8 @@ To change the I/O timeout value for a specific .Nm driver instance, set the following tunable value in .Xr loader.conf 5 : -.Bd -literal -offset indent -dev.mrsas.X.mrsas_io_timeout=NNNNNN -.Ed +.Pp +.Dl Va dev.mrsas.X.mrsas_io_timeout=NNNNNN .Pp where NNNNNN is the timeout value in milli-seconds. .Pp @@ -191,9 +176,8 @@ To change the firmware fault check timer value for a specific .Nm driver instance, set the following tunable value in .Xr loader.conf 5 : -.Bd -literal -offset indent -dev.mrsas.X.mrsas_fw_fault_check_delay=NN -.Ed +.Pp +.Dl Va dev.mrsas.X.mrsas_fw_fault_check_delay=NN .Pp where NN is the fault check delay value in seconds. .Pp @@ -248,7 +232,8 @@ or subsystem for selection of MR-Fusion cards. With the above design in place, the .Xr mfi 4 -driver will attach to a MR-Fusion card given that it has a higher priority than +driver will attach to a MR-Fusion card +given that it has a higher priority than .Nm . .Pp Using @@ -267,45 +252,48 @@ At boot time, the .Xr mfi 4 driver will get priority to detect MR-Fusion controllers by default. Before -changing this default driver selection policy, LSI advises users to understand -how the driver selection policy works. +changing this default driver selection policy, +LSI advises users to understand how the driver selection policy works. LSI's policy is to provide priority to the .Xr mfi 4 -driver to detect MR-Fusion cards, but allow for the ability to choose the +driver to detect MR-Fusion cards, +but allow for the ability to choose the .Nm driver to detect MR-Fusion cards. .Pp -LSI recommends setting hw.mfi.mrsas_enable="0" for customers who are using the -older +LSI recommends setting +.Va hw.mfi.mrsas_enable="0" +for customers who are using the older .Xr mfi 4 driver and do not want to switch to .Nm . -For those customers who are using a MR-Fusion controller for the first time, LSI -recommends using the +For those using a MR-Fusion controller for the first time, +LSI recommends using the .Nm -driver and setting hw.mfi.mrsas_enable="1". +driver and setting +.Va hw.mfi.mrsas_enable="1". .Pp -Changing the default behavior is well tested under most conditions, but -unexpected behavior may pop up if more complex and unrealistic operations are -executed by switching between the +Changing the default behavior is well tested under most conditions, +but unexpected behavior may pop up +if more complex and unrealistic operations are executed +by switching between the .Xr mfi 4 and .Nm drivers for MR-Fusion. Switching drivers is designed to happen only one time. -Although multiple -switching is possible, it is not recommended. +Although multiple switching is possible, it is not recommended. The user should decide from -.Nm Start of Day +.Sy boot which driver they want to use for the MR-Fusion card. .Pp The user may see different device names when switching from .Xr mfi 4 to .Nm . -This behavior is -.Nm Functions As Designed +This behavior +.Sy works as intended and the user needs to change the .Xr fstab 5 entry manually if they are doing any experiments with @@ -314,7 +302,7 @@ and .Nm interoperability. .Sh FILES -.Bl -tag -width ".Pa /dev/mrsas?" -compact +.Bl -tag -width "/dev/mrsas?" -compact .It Pa /dev/da? array/logical disk interface .It Pa /dev/mrsas? @@ -337,7 +325,8 @@ driver first appeared in is the old .Fx driver which started with support for Gen-1 Controllers and -was extended to support up to MR-Fusion (Device ID = 0x005B, 0x005D, 0x005F). +was extended to support up to MR-Fusion +.Pq Device ID = 0x005B, 0x005D, 0x005F . .Ed .Bd -ragged .Cd "mrsas Driver:" @@ -348,12 +337,12 @@ The SAS+SATA RAID controller with device id 0x005b is referred to as the Thunderbolt controller throughout this man page. .Ed .Bd -ragged -.Nm cam aware HBA drivers: +.Sy cam aware HBA drivers: .Fx has a .Xr cam 4 -layer which attaches storage devices and provides a common access mechanism to -storage controllers and attached devices. +layer which attaches storage devices and provides a +common access mechanism to storage controllers and attached devices. The .Nm driver is @@ -368,13 +357,13 @@ driver does not understand the .Xr cam 4 layer and it directly associates storage disks to the block layer. .Pp -.Nm Thunderbolt Controller: +.Sy Thunderbolt Controller: This is the 6Gb/s MegaRAID HBA card which has device id 0x005B. .Pp -.Nm Invader Controller: +.Sy Invader Controller: This is 12Gb/s MegaRAID HBA card which has device id 0x005D. .Pp -.Nm Fury Controller: +.Sy Fury Controller: This is the 12Gb/s MegaRAID HBA card which has device id 0x005F. .Ed .Sh AUTHORS @@ -382,12 +371,7 @@ The .Nm driver and this manual page were written by .An Kashyap Desai Aq Mt Kashyap.Desai@lsi.com . -.Sh TODO -The driver does not support alias for device name (it is required when the user -switches between two drivers and does not want to edit -.Pa /etc/fstab -manually). -.Pp +.Sh CAVEATS The .Nm driver exposes devices as @@ -398,8 +382,7 @@ exposes devices as .Pa /dev/mfid? . .Pp .Nm -does not support the Linux Emulator interface. -.Pp -.Nm -will not work with -.Xr mfiutil 8 . +does not support the Linux Emulator Interface, +.Xr mfiutil 8 , +or device name aliases for switching drivers without editing +.Xr fstab 5 . diff --git a/share/man/man4/muge.4 b/share/man/man4/muge.4 index 598106bf1855..2a1b0f600955 100644 --- a/share/man/man4/muge.4 +++ b/share/man/man4/muge.4 @@ -44,7 +44,7 @@ For more information on configuring this device, see .Sh HARDWARE The .Nm -driver supports: +driver supports Microchip USB Gigabit Ethernet interfaces, including: .Pp .Bl -bullet -compact .It diff --git a/share/man/man4/mx25l.4 b/share/man/man4/mx25l.4 index 5dffdebcf43e..a48b153e91ec 100644 --- a/share/man/man4/mx25l.4 +++ b/share/man/man4/mx25l.4 @@ -1,4 +1,6 @@ .\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" .\" Copyright (c) 2019 Ian Lepore <ian@freebsd.org> .\" .\" Redistribution and use in source and binary forms, with or without @@ -22,26 +24,18 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd June 11, 2024 +.Dd November 11, 2025 .Dt MX25L 4 .Os .Sh NAME .Nm mx25l -.Nd driver for SpiFlash(tm) compatible non-volatile storage devices +.Nd SpiFlash compatible non-volatile storage devices driver .Sh SYNOPSIS -To compile this driver into the kernel, -place the following line in your -kernel configuration file: -.Bd -ragged -offset indent -.Cd "device mx25l" -.Ed +.Cd device mx25l .Pp -Alternatively, to load the driver as a -module at boot time, place the following line in +In .Xr loader.conf 5 : -.Bd -literal -offset indent -mx25l_load="YES" -.Ed +.Cd mx25l_load="YES" .Sh DESCRIPTION The .Nm @@ -67,7 +61,7 @@ modules as with any disk device. .Sh HARDWARE The .Nm -driver provides support for the following devices: +driver supports the following spi flash memory devices: .Pp .Bl -bullet -compact .It @@ -99,6 +93,8 @@ MX25LL32 .It MX25LL64 .It +N25Q64 +.It S25FL032 .It S25FL064 diff --git a/share/man/man4/nda.4 b/share/man/man4/nda.4 index c4fa157af851..e45b2905462e 100644 --- a/share/man/man4/nda.4 +++ b/share/man/man4/nda.4 @@ -1,4 +1,6 @@ .\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" .\" Copyright (c) 2017 Netflix, Inc. .\" .\" Redistribution and use in source and binary forms, with or without @@ -23,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd June 6, 2020 +.Dd October 2, 2025 .Dt NDA 4 .Os .Sh NAME @@ -39,6 +41,14 @@ driver provides support for direct access devices, implementing the .Tn NVMe command protocol, that are attached to the system through a host adapter supported by the CAM subsystem. +.Sh HARDWARE +The +.Nm +driver supports NVMe +.Pq Non-Volatile Memory Express +storage devices connected via PCIe or over NVMF +.Pq NVMe over Fabric +via the CAM subsystem. .Sh SYSCTL VARIABLES The following variables are available as both .Xr sysctl 8 diff --git a/share/man/man4/nvd.4 b/share/man/man4/nvd.4 index d5145939e409..1861fabc91d0 100644 --- a/share/man/man4/nvd.4 +++ b/share/man/man4/nvd.4 @@ -31,7 +31,7 @@ .\" .\" Author: Jim Harris <jimharris@FreeBSD.org> .\" -.Dd May 18, 2019 +.Dd October 2, 2025 .Dt NVD 4 .Os .Sh NAME @@ -72,6 +72,10 @@ Note that device nodes from the driver are not .Xr GEOM 4 disks and cannot be partitioned. +.Sh HARDWARE +The +.Nm +driver supports NVMe storage devices using NVMe namespaces. .Sh CONFIGURATION The .Nm diff --git a/share/man/man4/nvdimm.4 b/share/man/man4/nvdimm.4 index 5b7dbe435c46..2bec51b42d72 100644 --- a/share/man/man4/nvdimm.4 +++ b/share/man/man4/nvdimm.4 @@ -26,7 +26,7 @@ .\" SUCH DAMAGE. .\" .Dd September 5, 2019 -.Dt NVDIMM 4 +.Dt NVDIMM 4 amd64 .Os .Sh NAME .Nm nvdimm diff --git a/share/man/man4/p9fs.4 b/share/man/man4/p9fs.4 index 04f27abd2545..a49053d461d4 100644 --- a/share/man/man4/p9fs.4 +++ b/share/man/man4/p9fs.4 @@ -96,7 +96,7 @@ may not work correctly. If .Nm is the root filesystem, -it is recommented to use with +it is recommended to use with .Xr tmpfs 5 to ensure that temporary files created in .Pa /tmp diff --git a/share/man/man4/pccard.4 b/share/man/man4/pccard.4 deleted file mode 100644 index cec07b2336cb..000000000000 --- a/share/man/man4/pccard.4 +++ /dev/null @@ -1,78 +0,0 @@ -.\" -.\" Copyright (c) 2002 M. Warner Losh <imp@FreeBSD.org> -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. The name of the author may not be used to endorse or promote products -.\" derived from this software without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.Dd August 18, 2020 -.Dt PCCARD 4 -.Os -.Sh NAME -.Nm pccard -.Nd PC Card bus driver -.Sh SYNOPSIS -.Cd device pccard -.Sh DEPRECATION NOTICE -This driver is scheduled for removal prior to the release of -.Fx 13.0 . -.Sh DESCRIPTION -The -.Nm -driver implements the PC Card bus. -The -.Nm -driver supports all PC Card bridges in the system. -.Sh TUNABLES -The driver supports the following tunable parameters, which may be -added to -.Pa /boot/loader.conf -or set via the -.Xr sysctl 8 -command: -.Bl -tag -width ".Cm hw.pccard.cis_debug" -compact -.It Cm hw.pccard.debug -Non-zero values cause more verbose information to be printed when a -16-bit PC Card is inserted or removed. -.It Cm hw.pccard.cis_debug -Non-zero value causes the CIS parsing of the 16-bit PC Card to be much -more verbose and include a complete CIS dump. -.El -.Sh FILES -.Bl -tag -width ".Pa /dev/pccard0.cis" -compact -.It Pa /dev/pccard0.cis -This exclusive-use device will report all the CIS chains present in a -PC Card, if a 16-bit PC Card is inserted in the slot. -Only one user at a time may access the CIS. -The CIS is presented as the relevant byte stream from the PC Card. -For CIS tuples in Attribute Memory (the default), only the even -locations are presented (the ODD locations are undefined per the -standard). -For CIS tuples in Common Memory, every byte is presented to the user. -Decoding of the CIS tuples is done via a userland program. -All tuples are presented to the user. -.El -.Sh SEE ALSO -.Xr cardbus 4 , -.\" .Xr mecia 4 , -.Xr pccbb 4 -.\" .Xr tcic 4 -.Rs -.%T "PC Card Standard, Release 8" -.Re diff --git a/share/man/man4/pccbb.4 b/share/man/man4/pccbb.4 index 3200e8b2d2e2..1c6cb2045033 100644 --- a/share/man/man4/pccbb.4 +++ b/share/man/man4/pccbb.4 @@ -176,5 +176,4 @@ debugging problems with the bridge chipset. .El .Sh SEE ALSO .Xr cardbus 4 , -.Xr exca 4 , -.Xr pccard 4 +.Xr exca 4 diff --git a/share/man/man4/pci.4 b/share/man/man4/pci.4 index 91fbb557f644..b99747969035 100644 --- a/share/man/man4/pci.4 +++ b/share/man/man4/pci.4 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd April 2, 2025 +.Dd August 31, 2025 .Dt PCI 4 .Os .Sh NAME @@ -235,6 +235,17 @@ revision ID. Driver name. .It pd_unit Driver unit number. +.It pd_numa_domain +Driver NUMA domain. +.It pc_reported_len +Length of the valid portion of the encompassing +.Vt pci_conf +structure. +This should always be equivalent to the offset of the +.Va pc_spare +member. +.It pc_spare +Reserved for future use. .El .It offset The offset is passed in by the user to tell the kernel where it should diff --git a/share/man/man4/pcic.4 b/share/man/man4/pcic.4 deleted file mode 100644 index 1c5b0fc35554..000000000000 --- a/share/man/man4/pcic.4 +++ /dev/null @@ -1,100 +0,0 @@ -.\" -.\" Copyright (c) 2001-2002 M. Warner Losh <imp@FreeBSD.org> -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. The name of the author may not be used to endorse or promote products -.\" derived from this software without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.Dd July 9, 2002 -.Dt PCIC 4 -.Os -.Sh NAME -.Nm pcic -.Nd PC Card bridge driver -.Sh SYNOPSIS -.Cd device pcic -.Cd device pccard -.Sh DESCRIPTION -The -.Nm -driver provides support for older ISA and non-Yenta PCI PC Card bridges. -The -.Nm -driver supports most -.Tn ExCA -devices attached to the -.Tn ISA -bus or -.Tn PCI -devices that do not conform to the Yenta specification. -.Pp -The following -.Tn ISA -devices, or true clones, are supported in the current code. -.Pp -.Bl -tag -width "Intel i82365SL Step A" -compact -.It Intel i82365SL Step A -.It Intel i82365SL Step B -.It Intel i82365SL Step C -.Tn Intel Ns 's -original 16-bit PC Card controller. -.It Intel i82365SL-DF -.Tn Intel Ns 's -last version of this device. -3.3V support was added. -.It VLSI 82C146 -An older VLSI part with some issues on some machines. -.It Cirrus Logic PD-6710 -.It Cirrus Logic PD-6720 -.It Cirrus Logic PD-6722 -Cirrus Logic's pcic controller. -Compatible with the i82365SL Step C with the addition of a different -3.3V control. -.It Ricoh RF5C296 -.It Ricoh RF5C396 -Ricoh's PC Card bridge chips. -These are compatible with the i82365SL Step C, but with yet another -different 3.3V control. -.It Vadem 365 -.It Vadem 465 -Compatible with i82365SL Step C. -.It Vadem 468 -.It Vadem 469 -Like the earlier Vadem models, but with Vadem's own, incompatible, 3.3V -control system. -.It IBM PCIC -.Tn IBM -clone of the original i82365SL part, with its own ID register value. -Has no 3.3V ability. -.El -.Pp -Many other vendors made parts in this arena, but most of them were -compatible with one of the above chipsets. -.Pp -The following PCI pcmcia bridges are supported: -.Pp -.Bl -tag -width "Intel i82365SL Step A" -compact -.It Cirrus Logic PD6729 -.It Cirrus Logic PD6730 -.Pp -.It O2micro OZ6729 -.It O2micro OZ6730 -.El -.Sh BUGS -This does not work at all at the moment. diff --git a/share/man/man4/pfsync.4 b/share/man/man4/pfsync.4 index cc9c350ea875..c12bad74831f 100644 --- a/share/man/man4/pfsync.4 +++ b/share/man/man4/pfsync.4 @@ -162,6 +162,8 @@ FreeBSD releases 13.2 and older. Compatibility with FreeBSD 13.1 has been verified. .It Cm 1400 FreeBSD release 14.0. +.It Cm 1500 +FreeBSD release 15.0. .El .Sh SYSCTL VARIABLES The following variables can be entered at the diff --git a/share/man/man4/puc.4 b/share/man/man4/puc.4 index a29376d3f2d5..624c215027af 100644 --- a/share/man/man4/puc.4 +++ b/share/man/man4/puc.4 @@ -257,6 +257,8 @@ Sunix SER5xxxx 8/4/2 port serial .It Syba Tech Ltd PCI-4S2P-550-ECP .It +Systembase SB16C1054/8 4/8 port serial +.It Titan PCI-800H/PCI-200H .It VScom: diff --git a/share/man/man4/qlnxe.4 b/share/man/man4/qlnxe.4 index f545235ec1ff..70bad789add1 100644 --- a/share/man/man4/qlnxe.4 +++ b/share/man/man4/qlnxe.4 @@ -24,7 +24,7 @@ .\" SUCH DAMAGE. .\" .Dd May 9, 2017 -.Dt QLNXE 4 +.Dt QLNXE 4 amd64 .Os .Sh NAME .Nm qlnxe diff --git a/share/man/man4/qlxgb.4 b/share/man/man4/qlxgb.4 index 4bf8000d15da..cc97cd060a3f 100644 --- a/share/man/man4/qlxgb.4 +++ b/share/man/man4/qlxgb.4 @@ -24,7 +24,7 @@ .\" SUCH DAMAGE. .\" .Dd November 3, 2011 -.Dt QLXGB 4 +.Dt QLXGB 4 amd64 .Os .Sh NAME .Nm qlxgb diff --git a/share/man/man4/qlxgbe.4 b/share/man/man4/qlxgbe.4 index 486a5ec0f682..465e4fc018ad 100644 --- a/share/man/man4/qlxgbe.4 +++ b/share/man/man4/qlxgbe.4 @@ -24,7 +24,7 @@ .\" SUCH DAMAGE. .\" .Dd April 1, 2013 -.Dt QLXGBE 4 +.Dt QLXGBE 4 amd64 .Os .Sh NAME .Nm qlxgbe diff --git a/share/man/man4/qlxge.4 b/share/man/man4/qlxge.4 index 4723c56ff68b..14a1e1284fab 100644 --- a/share/man/man4/qlxge.4 +++ b/share/man/man4/qlxge.4 @@ -24,7 +24,7 @@ .\" SUCH DAMAGE. .\" .Dd June 21, 2013 -.Dt QLXGE 4 +.Dt QLXGE 4 amd64 .Os .Sh NAME .Nm qlxge diff --git a/share/man/man4/random.4 b/share/man/man4/random.4 index 840bc0c3234b..457f49f3d3ce 100644 --- a/share/man/man4/random.4 +++ b/share/man/man4/random.4 @@ -21,7 +21,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd April 19, 2019 +.Dd August 28, 2025 .Dt RANDOM 4 .Os .Sh NAME @@ -30,6 +30,7 @@ .Sh SYNOPSIS .Cd "options RANDOM_LOADABLE" .Cd "options RANDOM_ENABLE_ETHER" +.Cd "options RANDOM_ENABLE_TPM" .Cd "options RANDOM_ENABLE_UMA" .Sh DESCRIPTION The @@ -132,6 +133,17 @@ are listed in square brackets. See .Xr random_harvest 9 for more on the harvesting of entropy. +.Pp +The +.Va kern.random.nist_healthtest_enabled +tunable can be used to enable the entropy source health tests outlined +in section 4 of NIST Special Publication 800-90B. +When enabled, all entropy sources will be subject to the repetition +count and adaptive proportion tests described in that document. +If one of the tests fails, the source will be disabled, i.e., all +subsequent entropy samples from that source will be discarded. +The implementation performs startup testing, during which entropy +sources are discarded. .Sh FILES .Bl -tag -width ".Pa /dev/urandom" .It Pa /dev/random diff --git a/share/man/man4/re.4 b/share/man/man4/re.4 index ac33aa4c4e3c..980247af142d 100644 --- a/share/man/man4/re.4 +++ b/share/man/man4/re.4 @@ -33,7 +33,7 @@ .Os .Sh NAME .Nm re -.Nd "RealTek 8139C+/8169/816xS/811xS/8168/810xE/8111 PCI/PCIe Ethernet adapter driver" +.Nd "Realtek 8139C+/8169/816xS/811xS/8168/810xE/8111 PCI/PCIe Ethernet adapter driver" .Sh SYNOPSIS To compile this driver into the kernel, place the following lines in your @@ -52,7 +52,7 @@ if_re_load="YES" .Sh DESCRIPTION The .Nm -driver provides support for various NICs based on the RealTek RTL8139C+, +driver provides support for various NICs based on the Realtek RTL8139C+, RTL8169, RTL816xS, RTL811xS, RTL8168, RTL810xE and RTL8111 PCI and PCIe Ethernet controllers. .Pp @@ -115,7 +115,7 @@ or modes. .It Cm 1000baseTX Set 1000baseTX operation over twisted pair. -The RealTek gigE chips support 1000Mbps in +The Realtek gigE chips support 1000Mbps in .Cm full-duplex mode only. .\" .It Cm 1000baseSX @@ -142,7 +142,7 @@ For more information on configuring this device, see .Sh HARDWARE The .Nm -driver supports RealTek RTL8139C+, RTL8169, RTL816xS, RTL811xS, RTL8168, +driver supports Realtek RTL8139C+, RTL8169, RTL816xS, RTL811xS, RTL8168, RTL810xE and RTL8111 based Fast Ethernet and Gigabit Ethernet adapters including: .Pp .Bl -bullet -compact @@ -241,7 +241,7 @@ the network connection (cable). .Xr vlan 4 , .Xr ifconfig 8 .Rs -.%T RealTek Semiconductor RTL8139C+, RTL8169, RTL8169S and RTL8110S datasheets +.%T Realtek Semiconductor RTL8139C+, RTL8169, RTL8169S and RTL8110S datasheets .%U https://www.realtek.com .Re .Sh HISTORY @@ -281,7 +281,7 @@ The user should ensure the NIC is installed in a 32-bit PCI slot to avoid this problem. .Pp -The RealTek 8169, 8169S and 8110S chips appear to only be capable of +The Realtek 8169, 8169S and 8110S chips appear to only be capable of transmitting jumbo frames up to 7.5K in size. .Pp If this driver is causing problems then an updated driver from diff --git a/share/man/man4/rgephy.4 b/share/man/man4/rgephy.4 index 2cc655aacb18..2e3048a32894 100644 --- a/share/man/man4/rgephy.4 +++ b/share/man/man4/rgephy.4 @@ -28,7 +28,7 @@ .Os .Sh NAME .Nm rgephy -.Nd RealTek RTL8168/8169/8110/8211 series 10/100/1000 Gigabit Ethernet PHY driver +.Nd Realtek RTL8168/8169/8110/8211 series 10/100/1000 Gigabit Ethernet PHY driver .Sh SYNOPSIS To compile all available PHY drivers into the kernel, place the following line in your kernel configuration file: @@ -45,7 +45,7 @@ place the following lines in your kernel configuration file instead: .Sh DESCRIPTION The .Nm -driver supports the RealTek RTL8168, RTL8169, RTL8110 and RTL8211 series +driver supports the Realtek RTL8168, RTL8169, RTL8110 and RTL8211 series integrated 10/100/1000 Gigabit Ethernet PHYs. .Pp In order to get a list of media types and options supported by a specific diff --git a/share/man/man4/rights.4 b/share/man/man4/rights.4 index 8f5f6ad9c2d2..0223ba0b6b88 100644 --- a/share/man/man4/rights.4 +++ b/share/man/man4/rights.4 @@ -281,7 +281,8 @@ Permit and .Xr openat 2 with -.Dv O_FSYNC +.Dv O_DSYNC , +.Dv O_FSYNC , or .Dv O_SYNC flag. diff --git a/share/man/man4/rl.4 b/share/man/man4/rl.4 index 9323e046a5e1..ba93b282ef73 100644 --- a/share/man/man4/rl.4 +++ b/share/man/man4/rl.4 @@ -33,7 +33,7 @@ .Os .Sh NAME .Nm rl -.Nd "RealTek 8129/8139 Fast Ethernet device driver" +.Nd "Realtek 8129/8139 Fast Ethernet device driver" .Sh SYNOPSIS To compile this driver into the kernel, place the following lines in your @@ -53,10 +53,10 @@ if_rl_load="YES" The .Nm driver provides support for PCI Ethernet adapters and embedded -controllers based on the RealTek 8129 and 8139 Fast Ethernet controller +controllers based on the Realtek 8129 and 8139 Fast Ethernet controller chips. .Pp -The RealTek 8129/8139 series controllers use bus master DMA but do not use a +The Realtek 8129/8139 series controllers use bus master DMA but do not use a descriptor-based data transfer mechanism. The receiver uses a single fixed size ring buffer from which packets must be copied @@ -86,7 +86,7 @@ driver supports the following media types: .It autoselect Enable autoselection of the media type and options. This is only -supported if the PHY chip attached to the RealTek controller +supported if the PHY chip attached to the Realtek controller supports NWAY autonegotiation. The user can manually override the autoselected mode by adding media options to the @@ -135,7 +135,7 @@ driver include: .It Accton .Dq Cheetah -EN1207D (MPX 5030/5038; RealTek 8139 clone) +EN1207D (MPX 5030/5038; Realtek 8139 clone) .It Allied Telesyn AT2550 .It @@ -259,7 +259,7 @@ the card should be configured correctly. .Xr polling 4 , .Xr ifconfig 8 .Rs -.%B The RealTek 8129, 8139 and 8139C+ datasheets +.%B The Realtek 8129, 8139 and 8139C+ datasheets .%U https://www.realtek.com .Re .Sh HISTORY @@ -284,7 +284,7 @@ longword aligned by definition. The driver probably should not be depending on this characteristic. .Pp -The RealTek data sheets are of especially poor quality, +The Realtek data sheets are of especially poor quality, and there is a lot of information missing particularly concerning the receiver operation. One particularly @@ -307,4 +307,4 @@ When the driver encounters this value, it knows that it has finished processing all currently available packets. Neither this magic value nor its significance are -documented anywhere in the RealTek data sheets. +documented anywhere in the Realtek data sheets. diff --git a/share/man/man4/rndtest.4 b/share/man/man4/rndtest.4 index 9ed16caf3b87..c73302063cd3 100644 --- a/share/man/man4/rndtest.4 +++ b/share/man/man4/rndtest.4 @@ -49,7 +49,6 @@ is received from the device. Failures are optionally reported on the console. .Sh SEE ALSO .Xr crypto 4 , -.Xr hifn 4 , .Xr random 4 , .Xr safe 4 , .Xr crypto 9 diff --git a/share/man/man4/rue.4 b/share/man/man4/rue.4 index c30d8ca2c757..b26acd575d65 100644 --- a/share/man/man4/rue.4 +++ b/share/man/man4/rue.4 @@ -28,7 +28,7 @@ .Os .Sh NAME .Nm rue -.Nd "RealTek RTL8150 USB to Fast Ethernet controller driver" +.Nd "Realtek RTL8150 USB to Fast Ethernet controller driver" .Sh SYNOPSIS To compile this driver into the kernel, place the following lines in your @@ -51,7 +51,7 @@ if_rue_load="YES" .Sh DESCRIPTION The .Nm -driver provides support for USB Ethernet adapters based on the RealTek +driver provides support for USB Ethernet adapters based on the Realtek RTL8150 USB to Fast Ethernet controller chip. .Pp The RTL8150 contains an integrated Fast Ethernet MAC, which supports @@ -107,7 +107,7 @@ For more information on configuring this device, see .Sh HARDWARE The .Nm -driver supports RealTek RTL8150 based USB Ethernet +driver supports Realtek RTL8150 based USB Ethernet adapters including: .Pp .Bl -bullet -compact @@ -138,7 +138,7 @@ The driver failed to allocate an mbuf for the receiver ring. .Xr ng_ether 4 , .Xr ifconfig 8 .Rs -.%T "RealTek RTL8150 data sheet" +.%T "Realtek RTL8150 data sheet" .%U http://pdf.seekdatasheet.com/2008714/200807142333305235.pdf .Re .Sh HISTORY diff --git a/share/man/man4/sa.4 b/share/man/man4/sa.4 index 699a940a34d1..6c948a0f21ab 100644 --- a/share/man/man4/sa.4 +++ b/share/man/man4/sa.4 @@ -82,21 +82,19 @@ the case where a control mode device is opened. In the latter case, exclusive access is only sought when needed (e.g., to set parameters). .Sh SUB-MODES -Bits 0 and 1 of the minor number are interpreted as -.Sq sub-modes . The sub-modes differ in the action taken when the device is closed: .Bl -tag -width XXXX -.It 00 +.It Pa /dev/sa* A close will rewind the device; if the tape has been written, then a file mark will be written before the rewind is requested. The device is unmounted. -.It 01 +.It Pa /dev/nsa* A close will leave the tape mounted. If the tape was written to, a file mark will be written. No other head positioning takes place. Any further reads or writes will occur directly after the last read, or the written file mark. -.It 10 +.It Pa /dev/esa* A close will rewind the device. If the tape has been written, then a file mark will be written before the rewind is requested. diff --git a/share/man/man4/safe.4 b/share/man/man4/safe.4 index 89375d058bf7..914b2dd0dd1c 100644 --- a/share/man/man4/safe.4 +++ b/share/man/man4/safe.4 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd November 22, 2024 +.Dd October 31, 2025 .Dt SAFE 4 .Os .Sh NAME @@ -57,6 +57,11 @@ In .Cd hw.safe.rngbufsize .Cd hw.safe.rngmaxalarm .Ed +.Sh DEPRECATION NOTICE +The +.Nm +driver is deprecated and is scheduled for removal in +.Fx 16.0 . .Sh DESCRIPTION The .Nm @@ -128,5 +133,14 @@ packet processing. .Xr random 4 , .Xr crypto 7 , .Xr crypto 9 +.Sh HISTORY +The +.Nm +driver first appeared in +.Fx 5.2 . +It is deprecated in +.Fx 15.0 +and removed in +.Fx 16.0 . .Sh BUGS Public key support is not implemented. diff --git a/share/man/man4/sbp.4 b/share/man/man4/sbp.4 index 2255fa2993ae..1daffd104a2c 100644 --- a/share/man/man4/sbp.4 +++ b/share/man/man4/sbp.4 @@ -1,3 +1,6 @@ +.\" +.\" SPDX-License-Identifier: BSD-4-Clause +.\" .\" Copyright (c) 1998-2002 Katsushi Kobayashi and Hidetoshi Shimokawa .\" All rights reserved. .\" @@ -29,7 +32,7 @@ .\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd February 8, 2012 +.Dd November 11, 2025 .Dt SBP 4 .Os .Sh NAME @@ -62,19 +65,27 @@ might wonder why the device is not detached at the CAM layer when the device is unplugged. It is detached only if the device has not been plugged again during several bus resets. -This is for preventing to detach an active file system -even when the device cannot be probed correctly for some reason after a bus reset +This is for preventing to detach an active file system even when the +device cannot be probed correctly for some reason after a bus reset or when the device is temporary disconnected because the user changes the bus topology. If you want to force to detach the device, run -.Dq Nm fwcontrol Fl r -several times or set hw.firewire.hold_count=0 by +.Ql fwcontrol -r +several times or set +.Va hw.firewire.hold_count=0 +by .Xr sysctl 8 . .Pp Some (broken) HDDs do not work well with tagged queuing. If you have problems with such drives, try -.Dq Nm camcontrol [device id] tags -N 1 +.Ql camcontrol [device id] tags -N 1 to disable tagged queuing. +.Sh HARDWARE +The +.Nm +driver supports FireWire Serial Bus Protocol 2 +.Pq SBP-2 +storage devices. .Sh SEE ALSO .Xr cam 4 , .Xr firewire 4 , diff --git a/share/man/man4/sdhci.4 b/share/man/man4/sdhci.4 index 4a4e02539acd..1608d9c2fe1a 100644 --- a/share/man/man4/sdhci.4 +++ b/share/man/man4/sdhci.4 @@ -1,4 +1,6 @@ .\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" .\" Copyright (c) 2008 Alexander Motin <mav@FreeBSD.org> .\" All rights reserved. .\" @@ -22,7 +24,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd August 25, 2020 +.Dd October 3, 2025 .Dt SDHCI 4 .Os .Sh NAME @@ -56,21 +58,28 @@ detaches it on card removing. .Sh HARDWARE The .Nm -driver supports different specification compatible chips. -The following chips have been verified to work: +driver supports the SD Host Controller Specification. +When attaching via the PCI bus, +the controller is automatically configured. +Many SoC chips provide a SDHCI controller directly mapped to I/O memory. +For those, the controller may be configured using +.Xr fdt 4 +or +.Xr acpi 4 +methods, supplied by your board's vendor. .Pp -.Bl -bullet -compact -.It -ENE CB712 -.It -ENE CB714 -.It -RICOH R5C822 -.It -RICOH R5CE823 -.It -TI PCIXX21/XX11/XX12 -.El +Unlike most other drivers that support a generic standard, +.Nm +requires a large number of quirks to cope with hardware bugs, +proprietary registers and poorly specified power management. +While many chipsets from +Intel, Xilinx, Rockchip, Frescale, Ricoh, and TI have these entries, +suboptimal performance may result when using some controllers. +Quirks and custom configuration are most often required +when the device is configured via +.Xr fdt 4 +or +.Xr acpi 4 . .Sh SEE ALSO .Xr mmc 4 , .Xr mmcsd 4 @@ -79,8 +88,3 @@ TI PCIXX21/XX11/XX12 .Re .Sh AUTHORS .An Alexander Motin Aq Mt mav@FreeBSD.org -.Sh BUGS -Many of existing SD controller chips have some nonstandard requirements, -proprietary registers and hardware bugs, requiring additional handling. -ENE chips are handled to work fine, while some revisions of RICOH and TI -controllers still do not see cards without some additional initialization. diff --git a/share/man/man4/sfxge.4 b/share/man/man4/sfxge.4 index a9724074581e..ea35cf3e573c 100644 --- a/share/man/man4/sfxge.4 +++ b/share/man/man4/sfxge.4 @@ -27,7 +27,7 @@ .\" policies, either expressed or implied, of the FreeBSD Project. .\" .Dd February 22, 2015 -.Dt SFXGE 4 +.Dt SFXGE 4 amd64 .Os .Sh NAME .Nm sfxge diff --git a/share/man/man4/smartpqi.4 b/share/man/man4/smartpqi.4 index 5b7ea923e13e..f5fab85d13bd 100644 --- a/share/man/man4/smartpqi.4 +++ b/share/man/man4/smartpqi.4 @@ -25,7 +25,7 @@ .\" SUCH DAMAGE. .\" .Dd August 24, 2023 -.Dt SMARTPQI 4 +.Dt SMARTPQI 4 amd64 .Os .Sh NAME .Nm smartpqi diff --git a/share/man/man4/snd_dummy.4 b/share/man/man4/snd_dummy.4 index 2b9d26d318ef..5e9d8aa5dd89 100644 --- a/share/man/man4/snd_dummy.4 +++ b/share/man/man4/snd_dummy.4 @@ -27,7 +27,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd July 15, 2024 +.Dd October 22, 2025 .Dt SND_DUMMY 4 .Os .Sh NAME @@ -47,11 +47,22 @@ physical sound card. It is intended for testing, so that test programs do not need to rely on hardware being present in the machine in order to run. .Pp -The driver attaches as a regular PCM device, with two channels (one playback -and one recording), as well as a mixer. +The driver attaches as a regular +.Xr sound 4 +device, with two channels (one playback and one recording), as well as a mixer. .Pp Playback works by discarding all input, and recording by returning silence (zeros). +.Sh FILES +.Bl -tag -width "/dev/dsp.dummy" -compact +.It Pa /dev/dsp.dummy +Alias to the device's +.Pa /dev/dsp%d +file created by +.Xr sound 4 . +This makes it easy for tests to open the dummy device when there are more +devices present in the system. +.El .Sh SEE ALSO .Xr sound 4 , .Xr loader.conf 5 , diff --git a/share/man/man4/sume.4 b/share/man/man4/sume.4 index 219328a4f4c4..b36f924875e6 100644 --- a/share/man/man4/sume.4 +++ b/share/man/man4/sume.4 @@ -25,7 +25,7 @@ .\" POSSIBILITY OF SUCH DAMAGE. .\" .Dd August 30, 2020 -.Dt SUME 4 +.Dt SUME 4 amd64 .Os .Sh NAME .Nm sume diff --git a/share/man/man4/syncache.4 b/share/man/man4/syncache.4 index e92502fd15ff..f83e9b083e45 100644 --- a/share/man/man4/syncache.4 +++ b/share/man/man4/syncache.4 @@ -10,7 +10,7 @@ .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" -.Dd April 12, 2021 +.Dd August 30, 2025 .Dt SYNCACHE 4 .Os .Sh NAME @@ -39,6 +39,8 @@ MIBs for controlling TCP SYN caching .Nm sysctl Cm net.inet.tcp.syncache.count .It .Nm sysctl Cm net.inet.tcp.syncache.see_other +.It +.Nm sysctl Cm net.inet.tcp.syncache.rst_on_sock_fail .El .Sh DESCRIPTION The @@ -107,6 +109,18 @@ and run only with set .Va net.inet.tcp.syncookies_only to 1. +To use +.Nm syncookies +to handle bucket overflows in the +.Nm syncache +set +.Va net.inet.tcp.syncookies +to 1. +The default value for +.Va net.inet.tcp.syncookies_only +is 0 and the default value for +.Va net.inet.tcp.syncookies +is 1. .Pp The .Nm @@ -169,6 +183,9 @@ However, extra .Xr ucred 9 referencing is required on every incoming SYN packet processed. The default is off. +.It Va rst_on_sock_fail +Send a TCP RST segment if the socket allocation fails. +The default is on. .El .Pp Statistics on the performance of the @@ -206,8 +223,16 @@ Entries dropped due to ICMP unreachable messages. Failures to allocate new .Nm entry. +.It Li "cookies sent" +SYN cookies sent in SYN ACK segments. .It Li "cookies received" -Connections created from segment containing ACK. +ACK segments with valid syncookies which resulted in TCP connection +establishment. +.It Li "spurious cookies rejected" +Received ACKs, for which the syncache lookup failed and also no syncookie was +recently sent. +.It Li "failed cookies rejected" +Received ACKs for which the syncookie validation failed. .El .Sh SEE ALSO .Xr netstat 1 , diff --git a/share/man/man4/tap.4 b/share/man/man4/tap.4 index 95a681a923d2..a4fe98cdfecf 100644 --- a/share/man/man4/tap.4 +++ b/share/man/man4/tap.4 @@ -203,6 +203,21 @@ The argument should be a pointer to a The interface name will be returned in the .Va ifr_name field. +.It Dv TAPSTRANSIENT +The argument should be a pointer to an +.Va int ; +this sets the transient flag on +the +.Nm +device. +A transient +.Nm +will be destroyed upon last close. +.It Dv TAPGTRANSIENT +The argument should be a pointer to an +.Va int ; +this stores the current state (enabled or disabled) of the transient flag into +it. .It Dv FIONBIO Turn non-blocking I/O for reads off or on, according as the argument .Va int Ns 's diff --git a/share/man/man4/tcp.4 b/share/man/man4/tcp.4 index fcfda42908d8..3c9f4ff83f3d 100644 --- a/share/man/man4/tcp.4 +++ b/share/man/man4/tcp.4 @@ -31,7 +31,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd June 27, 2025 +.Dd September 5, 2025 .Dt TCP 4 .Os .Sh NAME @@ -940,9 +940,6 @@ maximum segment size. This helps throughput in general, but particularly affects short transfers and high-bandwidth large propagation-delay connections. -.It Va rfc6675_pipe -Deprecated and superseded by -.Va sack.revised .It Va sack.enable Enable support for RFC 2018, TCP Selective Acknowledgment option, which allows the receiver to inform the sender about all successfully @@ -974,6 +971,11 @@ recovery, the trailing segment is immediately resent, rather than waiting for a Retransmission timeout. Finally, SACK loss recovery is also engaged, once two segments plus one byte are SACKed - even if no traditional duplicate ACKs were observed. +.Va sack.revised +is deprecated and will be removed in +.Fx 16 . +.Va sack.enable +will always follow RFC6675. .It Va sendbuf_auto Enable automatic send buffer sizing. .It Va sendbuf_auto_lowat diff --git a/share/man/man4/thunderbolt.4 b/share/man/man4/thunderbolt.4 new file mode 100644 index 000000000000..fd7cb1f3f338 --- /dev/null +++ b/share/man/man4/thunderbolt.4 @@ -0,0 +1,22 @@ +.\" +.\" Copyright (c) 2025 Alexander Ziaee +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.Dd October 2, 2025 +.Dt THUNDERBOLT 4 +.Os +.Sh NAME +.Nm thunderbolt +.Nd USB4 controller driver +.Sh SYNOPSIS +.Cd device thunderbolt +.Sh HARDWARE +The +.Nm +driver supports Thunderbolt 3 and USB4 controllers. +.Sh HISTORY +The +.Nm +driver appeared in +.Fx 15.0 . diff --git a/share/man/man4/tun.4 b/share/man/man4/tun.4 index 58f67cb20acb..1c5bd35f0ab8 100644 --- a/share/man/man4/tun.4 +++ b/share/man/man4/tun.4 @@ -282,6 +282,21 @@ The argument should be a pointer to an the ioctl sets the value to one if the device is in .Dq multi-af mode, and zero otherwise. +.It Dv TUNSTRANSIENT +The argument should be a pointer to an +.Va int ; +this sets the transient flag on +the +.Nm +device. +A transient +.Nm +will be destroyed upon last close. +.It Dv TUNGTRANSIENT +The argument should be a pointer to an +.Va int ; +this stores the current state (enabled or disabled) of the transient flag into +it. .It Dv FIONBIO Turn non-blocking I/O for reads off or on, according as the argument .Vt int Ns 's diff --git a/share/man/man4/u2f.4 b/share/man/man4/u2f.4 new file mode 100644 index 000000000000..4c51e140242e --- /dev/null +++ b/share/man/man4/u2f.4 @@ -0,0 +1,96 @@ +.\" +.\" SPDX-License-Identifier: ISC +.\" +.\" $OpenBSD: fido.4,v 1.4 2020/08/21 19:02:46 mglocker Exp $ +.\" +.\" Copyright (c) 2019 Reyk Floeter <reyk@openbsd.org> +.\" Copyright (c) 2023 Vladimir Kondratyev <wulf@FreeBSD.org> +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +.\" +.Dd August 21, 2023 +.Dt U2F 4 +.Os +.Sh NAME +.Nm u2f +.Nd FIDO/U2F USB security keys +.Sh SYNOPSIS +.Cd "device u2f" +.Pp +In +.Xr loader.conf 5 : +.Cd u2f_load="YES" +.Pp +In +.Xr sysctl.conf 5 : +.Cd hw.hid.u2f.debug +.Sh DESCRIPTION +The +.Nm +driver provides support for FIDO/U2F-compatible USB security keys. +They are Human Interface Devices (HID) which can be accessed via the +.Pa /dev/u2f/N +interface. +.Pp +The driver is compatible with the +.Xr read 2 , +.Xr write 2 , +and +.Xr ioctl 2 +operations of the generic +.Xr uhid 4 +device but only accepts the optional HID +.Xr ioctl 2 +calls from u2f group users. +.Sh HARDWARE +The +.Nm +driver supports FIDO/U2F-compatible USB security keys. +.Sh SYSCTL VARIABLES +The following variables are available as both +.Xr sysctl 8 +variables and +.Xr loader 8 +tunables: +.Bl -tag -width indent +.It Va hw.hid.u2f.debug +Debug output level, where 0 is debugging disabled and larger values increase +debug message verbosity. +Default is 0. +.El +.Sh FILES +.Bl -tag -width /dev/u2f/* -compact +.It Pa /dev/u2f/* +.El +.Sh SEE ALSO +.Xr uhid 4 , +.Xr usbhid 4 , +.Xr usb 4 +.Sh HISTORY +The +.Nm +driver first appeared in +.Fx 15.0 . +.Sh AUTHORS +.An -nosplit +The +.Nm +driver was written by +.An Vladimir Kondratyev Aq Mt wulf@FreeBSD.org . +.Pp +This manual page was written by +.An Vladimir Kondratyev Aq Mt wulf@FreeBSD.org +based on the +.Ox +.Xr fido 4 +manual page. diff --git a/share/man/man4/u3g.4 b/share/man/man4/u3g.4 index 51c883b8378e..c7bf1f98880a 100644 --- a/share/man/man4/u3g.4 +++ b/share/man/man4/u3g.4 @@ -94,14 +94,14 @@ Qualcomm Inc. GOBI 1000, 2000 and 3000 devices with MDM1000 or MDM2000 chipsets .It QUECTEL BGX, ECX, EGX, EMX, EPX, RGX series .It -Quectel EM160R +Quectel EM160R, EM060K .Pq see Sx CAVEATS .It Huawei B190, E180v, E220, E3372, E3372v153, E5573Cs322, ('<Huawei Mobile>') .It Novatel U740, MC950D, X950D, etc. .It -Sierra MC875U, MC8775U, etc. +Sierra MC875U, MC8775U, EM7590, etc. .It Panasonic CF-F9 GOBI .El diff --git a/share/man/man4/udbc.4 b/share/man/man4/udbc.4 new file mode 100644 index 000000000000..c8fa02ec18f1 --- /dev/null +++ b/share/man/man4/udbc.4 @@ -0,0 +1,132 @@ +.\" +.\" Copyright (c) 2025 The FreeBSD Foundation +.\" +.\" This documentation was written by Tom Jones <thj@freebsd.org> under +.\" sponsorship from the FreeBSD Foundation. +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.\" +.Dd September 3, 2025 +.Dt UDBC 4 +.Os +.Sh NAME +.Nm udbc +.Nd USB Debug Class device driver +.Sh SYNOPSIS +.Cd "device usb" +.Cd "device ucom" +.Cd "device udbc" +.Pp +In +.Xr rc.conf 5 : +.Cd kld_list="udbc" +.Sh DESCRIPTION +The +.Nm +driver provides support for USB Debug Class devices whose +interface class is Diagnostic Class and the subclass is DbC.GP. +.Pp +The USB Debug Class is defined in the USB 3.1 Device Class +Specification for Debug Devices. +This is designed to provide a general-purpose communication channel +for debugging. +It has also been widely implemented in USB xHCs +.Pq USB eXtensible Host Controllers , +which can be found on many commodity computers, +as an optional feature. +Once this feature is enabled on a USB xHC, one of the USB ports will +behave as a USB Debug Class device, +not a host port, +when a USB debug cable is connected. +The supported class in USB xHCs is typically DbC.GP, +while the specification defines several types of Debug Class devices. +The DbC.GP uses IN and OUT endpoint pairs and realizes a single +bidirectional serial communication channel. +On most systems, +including +.Fx , +the DbC.GP is seen as a simple serial device. +.Pp +Most systems with USB xHC can be configured to provide DbC.GP access. +The +.Nm +is a driver that connects to DbC.GP-supported devices, +offering +.Xr tty 4 +devices to connect to them via the +.Xr ucom 4 +device driver. +.Sh HARDWARE CONFIGURATION +A native DbC.GP device can be attached using the +.Nm +driver in a straightforward way. +.Pp +A USB xHC DbC.GP device on a target system needs a special hardware +configuration because all of the ports are supposed to be a USB Host. +There is one method to expose DbC.GP is to use a USB 3.1 A-to-A cable +.Pq section 5.5.2 in USB 3.1 Legacy Cable and Connector Specification . +When this cable is connected to a USB 3.1 port on the target system, +the DbC-enabled USB xHC automatically switches the port as a USB Device. +The +.Nm +driver can find a DbC.GP device on that port. +.Pp +Note that a USB xHC with USB 3.2 support +.Pq USB Type-C connectors +is not compatible with the USB 3.1 A-to-A cable. +Connecting a USB 3.2 C-to-C cable or A-to-C cable does not automatically work, +either, +because it needs role configuration of the port, which is not supported on +.Fx +yet. +.Sh FILES +.Bl -tag -width "/dev/ttyU*.*.init" -compact +.It Pa /dev/ttyU*.* +for callin ports +.It Pa /dev/ttyU*.*.init +.It Pa /dev/ttyU*.*.lock +corresponding callin initial-state and lock-state devices +.Pp +.It Pa /dev/cuaU*.* +for callout ports +.It Pa /dev/cuaU*.*.init +.It Pa /dev/cuaU*.*.lock +corresponding callout initial-state and lock-state devices +.El +.Sh SEE ALSO +.Xr tty 4 , +.Xr ucom 4 , +.Xr usb 4 , +.Xr xhci 4 +.Sh STANDARDS +.Rs +.%T eXtensible Host Controller Interface for Universal Serial Bus (XHCI) +.%U https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/extensible-host-controler-interface-usb-xhci.pdf +.Re +.Rs +.%T USB 3.1 Device Class Specification for Debug Devices +.%U https://www.usb.org/sites/default/files/documents/usb_debug_class_rev_1_0_final_0.pdf +.Re +.Rs +.%T USB 3.1 Legacy Cable and Connector Specification +.%U https://www.usb.org/document-library/usb-31-legacy-cable-and-connector-revision-10 +.Re +.Sh HISTORY +The +.Nm +driver first appeared +.Fx +15.0. +.Sh AUTHORS +.An -nosplit +The +.Nm +driver was written by +.An Hiroki Sato Aq Mt hrs@FreeBSD.org . +.Sh BUGS +According to the XHCI specification the host side of USB Debug should work with +any USB 3.0 port, +whether connected directly to a controller or with a hub in between. +Testing on some controllers has encountered issues when using a hub rather than +a directly connected port on the controller. diff --git a/share/man/man4/umass.4 b/share/man/man4/umass.4 index 03e8b6ff6ef1..306dc4e851ba 100644 --- a/share/man/man4/umass.4 +++ b/share/man/man4/umass.4 @@ -1,3 +1,6 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" .\" Copyright (c) 1999 .\" Nick Hibma <n_hibma@FreeBSD.org>. All rights reserved. .\" @@ -22,44 +25,44 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd January 27, 2020 +.Dd November 28, 2025 .Dt UMASS 4 .Os .Sh NAME .Nm umass .Nd USB Mass Storage Devices driver .Sh SYNOPSIS -To compile this driver into the kernel, -place the following line in your -kernel configuration file: -.Bd -ragged -offset indent +.Cd "device da" .Cd "device scbus" +.Cd "device pass" .Cd "device usb" .Cd "device umass" -.Ed .Pp -Alternatively, to load the driver as a -module at boot time, place the following line in +In .Xr loader.conf 5 : -.Bd -literal -offset indent -umass_load="YES" -.Ed +.Cd umass_load .Sh DESCRIPTION The .Nm driver provides support for Mass Storage devices that attach to the USB -port. +interface. .Pp -To use the -.Nm -driver, +If the appropriate hardware is detected, +the driver will be loaded automatically by +.Xr devmatch 8 . +To load the driver manually at boot time, use the +.Cm umass_load +command at the +.Xr loader 8 +prompt, or add it to +.Xr loader.conf 5 . +.Pp +To use the driver in a custom kernel, .Xr usb 4 -and one of -.Xr uhci 4 -or -.Xr ohci 4 -or -.Xr ehci 4 +and at least one of +.Xr uhci 4 , +.Xr ohci 4 , +.Xr ehci 4 , or .Xr xhci 4 must be configured in the kernel. @@ -71,17 +74,41 @@ requires and .Xr scbus 4 to be included in the kernel. -.Sh EXAMPLES -.Bd -literal -offset indent -device umass -device scbus -device da -device pass -.Ed +.Sh HARDWARE +The +.Nm +driver supports USB Mass Storage devices such as: +.Pp +.Bl -bullet -compact +.It +USB thumb drives +.It +USB hard disk drives +.It +USB floppy drives +.El .Pp -Add the +The .Nm -driver to the kernel. +driver tries its best to avoid issues with the drives, not all issues +can be handled automatically, so quirks may be necessary. +See the +.Em USB Mass Sotrage quirks +section of +.Xr usb_quirk 4 +for quirks for the drives. +The +.Cd add_dev_quirk_vplh +and +.Cd add_quirk +commands of +.Xr usbconfig 8 +can manage these dynamically. +Quirks can be specified via tuables, as described in +.Xr usb_quirk 4 . +.Sh EXAMPLES +Rescan all slots on a multi-slot flash reader, +where the slots map to separate LUNs on a single SCSI ID: .Bd -literal -offset indent camcontrol rescan 0:0:0 camcontrol rescan 0:0:1 @@ -89,19 +116,24 @@ camcontrol rescan 0:0:2 camcontrol rescan 0:0:3 .Ed .Pp -Rescan all slots on a multi-slot flash reader, where the slots map to separate -LUNs on a single SCSI ID. Typically only the first slot will be enabled at boot time. -This assumes that the flash reader is the first SCSI bus in the system and has 4 slots. +This assumes that +the flash reader is the first SCSI bus in the system and has 4 slots. .Sh SEE ALSO .Xr cfumass 4 , .Xr ehci 4 , .Xr ohci 4 , .Xr uhci 4 , .Xr usb 4 , +.Xr usb_quirk 4 , .Xr xhci 4 , -.Xr camcontrol 8 -.\".Sh HISTORY +.Xr camcontrol 8 , +.Xr usbconfig 8 . +.Sh HISTORY +The +.Nm +driver appeared in +.Fx 4.3 . .Sh AUTHORS .An -nosplit The diff --git a/share/man/man4/umb.4 b/share/man/man4/umb.4 index 7ecc9a39c1ca..37c86b3074f5 100644 --- a/share/man/man4/umb.4 +++ b/share/man/man4/umb.4 @@ -17,34 +17,33 @@ .\" .\" $NetBSD: umb.4,v 1.4 2019/08/30 09:22:17 wiz Exp $ .\" -.Dd May 11, 2025 +.Dd September 3, 2025 .Dt UMB 4 .Os .Sh NAME .Nm umb .Nd USB Mobile Broadband Interface Model (MBIM) cellular modem driver .Sh SYNOPSIS -To compile this driver into the kernel, -place the following lines in your -kernel configuration file: -.Bd -ragged -offset indent .Cd "device usb" .Cd "device umb" -.Ed .Pp -Alternatively, to load the driver as a -module at boot time, place the following line in +In .Xr loader.conf 5 : -.Bd -literal -offset indent -umb_load="YES" -.Ed -.Pp -If neither of the above is done, the driver will automatically be loaded -by devd(8) when the device is connected. +.Cd umb_load="YES" .Sh DESCRIPTION The .Nm driver provides support for USB MBIM devices. +If the appropriate hardware is detected, +the driver will be loaded automatically by +.Xr devmatch 8 . +To load the driver manually, +.Cm load +it in +.Xr loader.conf 5 +or at the +.Xr loader 8 +prompt. .Pp MBIM devices establish connections via cellular networks such as GPRS, UMTS, and LTE. diff --git a/share/man/man4/upgt.4 b/share/man/man4/upgt.4 index 5d4ada1d1a1f..cc5775d252ac 100644 --- a/share/man/man4/upgt.4 +++ b/share/man/man4/upgt.4 @@ -48,7 +48,7 @@ .\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd February 18, 2025 +.Dd October 24, 2025 .Dt UPGT 4 .Os .Sh NAME @@ -78,7 +78,7 @@ if_upgt_load="YES" The .Nm driver is slated to be removed in -.Fx 15.0 . +.Fx 16.0 . .Sh DESCRIPTION The .Nm diff --git a/share/man/man4/usbhid.4 b/share/man/man4/usbhid.4 index e5ba370cd025..0b2e7230e3f4 100644 --- a/share/man/man4/usbhid.4 +++ b/share/man/man4/usbhid.4 @@ -21,7 +21,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd July 30, 2025 +.Dd October 2, 2025 .Dt USBHID 4 .Os .Sh NAME @@ -67,9 +67,13 @@ Default is 1. Debug output level, where 0 is debugging disabled and larger values increase debug message verbosity. Default is 0. +Debug messages are printed on the system console and can be viewed using +.Xr dmesg 8 . .El .Sh SEE ALSO .Xr ehci 4 , +.Xr hkbd 4 , +.Xr hms 4 , .Xr ohci 4 , .Xr uhci 4 , .Xr usb 4 , @@ -80,6 +84,8 @@ The .Nm driver first appeared in .Fx 13.0 . +It was enabled by default in +.Fx 15.0 . .Sh AUTHORS .An -nosplit The diff --git a/share/man/man4/vt.4 b/share/man/man4/vt.4 index 21d69bf9d495..6176c8c3093e 100644 --- a/share/man/man4/vt.4 +++ b/share/man/man4/vt.4 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd July 7, 2024 +.Dd November 21, 2025 .Dt VT 4 .Os .Sh NAME @@ -352,6 +352,12 @@ Notification that the console bell has rung. .It Li hz Ta Tone that was requested in Hz. .El .Sh EXAMPLES +To increase the scrollback buffer size to 22500 lines, +add the following line to +.Pa /etc/rc.conf : +.Pp +.Dl allscreens_flags="-h 22500" +.Pp This example changes the default color of normal text to green on a black background, or black on a green background when reversed. Note that white space cannot be used inside the attribute string @@ -414,6 +420,7 @@ at boot: .Xr getty 8 , .Xr kldload 8 , .Xr moused 8 , +.Xr vidcontrol 8 , .Xr vtfontcvt 8 .Sh HISTORY The diff --git a/share/man/man4/vtnet.4 b/share/man/man4/vtnet.4 index 8b99cd9f17b9..fd41b36882a6 100644 --- a/share/man/man4/vtnet.4 +++ b/share/man/man4/vtnet.4 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd July 29, 2025 +.Dd September 30, 2025 .Dt VTNET 4 .Os .Sh NAME @@ -54,6 +54,20 @@ TCP segmentation offload (TSO), TCP large receive offload (LRO), hardware VLAN tag stripping/insertion features, a multicast hash filter, as well as Jumbo Frames (up to 9216 bytes), which can be configured via the interface MTU setting. +.Pp +Two flavors of TCP LRO are supported: +Hardware TCP LRO, which is performed by the host providing TCP segments larger +than the MTU to the guest, and Software TCP LRO, which is performed by the +network stack of the guest processing TCP segments in an optimized way. +Only one flavour of TCP LRO should be used. +Since hardware TCP LRO can have bad interactions with IP forwarding and +software TCP LRO mitigates several drawbacks of hardware TCP LRO, the default +setting is to disable hardware TCP LRO. +See the loader tunable +.Va hw.vtnet. Ns Ar X Ns Va .lro_disable . +.Pp +TCP/UDP receive checksum offload cannot be configured independently for IPv4 +and IPv6. Selecting an MTU larger than 1500 bytes with the .Xr ifconfig 8 utility configures the adapter to receive and transmit Jumbo Frames. @@ -68,21 +82,32 @@ prompt before booting the kernel or stored in .Bl -tag -width "xxxxxx" .It Va hw.vtnet.csum_disable .It Va hw.vtnet. Ns Ar X Ns Va .csum_disable -This tunable disables receive and send checksum offload. +This tunable disables receive and transmit checksum offloading for TCP and +UDP. +This also implies that TCP segmentation offloading and large receive offload +are disabled. The default value is 0. .It Va hw.vtnet.fixup_needs_csum .It Va hw.vtnet. Ns Ar X Ns Va .fixup_needs_csum -This tunable enforces the calculation of a valid checksum for NEEDS_CSUM -packets. +This tunable enforces the calculation of a valid TCP or UDP checksum for +packets received with +.Dv VIRTIO_NET_HDR_F_NEEDS_CSUM +being set in the +.Va flags +field of the structure +.Vt struct virtio_net_hdr . +It also marks the checksum as being correct in the mbuf packet header. The default value is 0. +This tunable is deprecated and will be removed in +.Fx 16 . .It Va hw.vtnet.tso_disable .It Va hw.vtnet. Ns Ar X Ns Va .tso_disable -This tunable disables TSO. +This tunable disables TCP segmentation offloading. The default value is 0. .It Va hw.vtnet.lro_disable .It Va hw.vtnet. Ns Ar X Ns Va .lro_disable -This tunable disables LRO. -The default value is 0. +This tunable disables hardware TCP LRO. +The default value is 1. .It Va hw.vtnet.mq_disable .It Va hw.vtnet. Ns Ar X Ns Va .mq_disable This tunable disables multiqueue. @@ -106,17 +131,147 @@ This tunable sets the number of RX segments processed in one pass. The default value is 1024. .It Va hw.vtnet.lro_entry_count .It Va hw.vtnet. Ns Ar X Ns Va .lro_entry_count -This tunable sets the software LRO entry count. +This tunable sets the software TCP LRO entry count. The default value is 128, the minimum value is 8. .It Va hw.vtnet.lro_mbufq_depth .It Va hw.vtnet. Ns Ar X Ns Va .lro_mbufq_depth -This tunable sets the depth of the software LRO mbuf queue. +This tunable sets the depth of the software TCP LRO mbuf queue. The default value is 0. .It Va hw.vtnet.altq_disable This tunable disables ALTQ support, allowing the use of multiqueue instead. This option applies to all interfaces. The default value is 0. .El +.Sh TRANSMIT QUEUE STATISTICS +For each transmit queue of each interface the following read-only statistics +are provided: +.Bl -tag -width "xxxxxx" +.It Va dev.vtnet. Ns Ar X Ns Va .txq Ns Ar Y Ns Va .rescheduled +The number of times the transmit interrupt handler was rescheduled. +.It Va dev.vtnet. Ns Ar X Ns Va .txq Ns Ar Y Ns Va .tso +The number of times TCP segment offloading was performed. +.It Va dev.vtnet. Ns Ar X Ns Va .txq Ns Ar Y Ns Va .csum +The number of times transmit checksum offloading for UDP or TCP was +performed. +.It Va dev.vtnet. Ns Ar X Ns Va .txq Ns Ar Y Ns Va .omcasts +The number of multicast packets that were transmitted. +.It Va dev.vtnet. Ns Ar X Ns Va .txq Ns Ar Y Ns Va .obytes +The number of bytes that were transmitted (based on Ethernet frames). +.It Va dev.vtnet. Ns Ar X Ns Va .txq Ns Ar Y Ns Va .opackets +The number of packets that were transmitted (Ethernet frames). +.El +.Sh RECEIVE QUEUE STATISTICS +For each receive queue of each interface the following read-only statistics +are provided: +.Bl -tag -width "xxxxxx" +.It Va dev.vtnet. Ns Ar X Ns Va .rxq Ns Ar Y Ns Va .rescheduled +The number of times the receive interrupt handler was rescheduled. +.It Va dev.vtnet. Ns Ar X Ns Va .rxq Ns Ar Y Ns Va .host_lro +The number of times TCP large receive offload was performed. +.It Va dev.vtnet. Ns Ar X Ns Va .rxq Ns Ar Y Ns Va .csum_failed +The number of times a packet with a request for receive or transmit checksum +offloading was received and this request failed. +The different reasons for the failure are counted by +.Va dev.vtnet. Ns Ar X Ns Va .rx_csum_inaccessible_ipproto , +.Va dev.vtnet. Ns Ar X Ns Va .rx_csum_bad_ipproto , +.Va dev.vtnet. Ns Ar X Ns Va .rx_csum_bad_ethtype , +and +.Va dev.vtnet. Ns Ar X Ns Va .rx_csum_bad_offset . +.It Va dev.vtnet. Ns Ar X Ns Va .rxq Ns Ar Y Ns Va .csum +The number of times receive checksum offloading for UDP or TCP was performed. +.It Va dev.vtnet. Ns Ar X Ns Va .rxq Ns Ar Y Ns Va .ierrors +The number of times an error occurred during input processing. +.It Va dev.vtnet. Ns Ar X Ns Va .rxq Ns Ar Y Ns Va .iqdrops +The number of times a packet was dropped during input processing. +.It Va dev.vtnet. Ns Ar X Ns Va .rxq Ns Ar Y Ns Va .ibytes +The number of bytes that were received (based on Ethernet frames). +.It Va dev.vtnet. Ns Ar X Ns Va .rxq Ns Ar Y Ns Va .ipackets +The number of packets that were received (Ethernet frames). +.El +.Sh INTERFACE TRANSMIT STATISTICS +For each interface the following read-only transmit statistics are provided: +.Bl -tag -width "xxxxxx" +.It Va dev.vtnet. Ns Ar X Ns Va .tx_task_rescheduled +The sum of +.Va dev.vtnet. Ns Ar X Ns Va .txq Ns Ar Y Ns Va .rescheduled +over all transmit queues of the interface. +.It Va dev.vtnet. Ns Ar X Ns Va .tx_tso_offloaded +The sum of +.Va dev.vtnet. Ns Ar X Ns Va .txq Ns Ar Y Ns Va .tso +over all transmit queues of the interface. +.It Va dev.vtnet. Ns Ar X Ns Va .tx_csum_offloaded +The sum of +.Va dev.vtnet. Ns Ar X Ns Va .txq Ns Ar Y Ns Va .csum +over all transmit queues of the interface. +.It Va dev.vtnet. Ns Ar X Ns Va .tx_defrag_failed +The number of times an attempt to defragment an mbuf chain failed during a +transmit operation. +.It Va dev.vtnet. Ns Ar X Ns Va .tx_defragged +The number of times an mbuf chain was defragmented during a transmit operation. +.It Va dev.vtnet. Ns Ar X Ns Va .tx_tso_without_csum +The number of times TCP segment offloading was attempted without transmit +checksum offloading. +.It Va dev.vtnet. Ns Ar X Ns Va .tx_tso_not_tcp +The number of times TCP segment offloading was attempted for a non-TCP packet. +.It Va dev.vtnet. Ns Ar X Ns Va .tx_csum_proto_mismatch +The number of times the IP protocol version of the transmit checksum +offloading request did not match the IP protocol version of the packet. +.It Va dev.vtnet. Ns Ar X Ns Va .tx_csum_unknown_ethtype +The number of times a transmit offload operation was requested for an +ethernet frame for which the EtherType was neither IPv4 nor IPv6 +(considering simple VLAN tagging). +.El +.Sh INTERFACE RECEIVE STATISTICS +For each interface the following read-only receive statistics are provided: +.Bl -tag -width "xxxxxx" +.It Va dev.vtnet. Ns Ar X Ns Va .rx_task_rescheduled +The sum of +.Va dev.vtnet. Ns Ar X Ns Va .rxq Ns Ar Y Ns Va .rescheduled +over all receive queues of the interface. +.It Va dev.vtnet. Ns Ar X Ns Va .rx_csum_offloaded +The sum of +.Va dev.vtnet. Ns Ar X Ns Va .rxq Ns Ar Y Ns Va .csum +over all receive queues of the interface. +.It Va dev.vtnet. Ns Ar X Ns Va .rx_csum_failed +The sum of +.Va dev.vtnet. Ns Ar X Ns Va .rxq Ns Ar Y Ns Va .csum_failed +over all receive queues of the interface. +.It Va dev.vtnet. Ns Ar X Ns Va .rx_csum_inaccessible_ipproto +The number of times a packet with a request for receive or transmit checksum +offloading was received where the IP protocol was not accessible. +.It Va dev.vtnet. Ns Ar X Ns Va .rx_csum_bad_offset +The number of times fixing the checksum required by +.Va hw.vtnet.fixup_needs_csum +or +.Va hw.vtnet. Ns Ar X Ns Va .fixup_needs_csum +was attempted for a packet where the csum is not located in the first mbuf. +.It Va dev.vtnet. Ns Ar X Ns Va .rx_csum_bad_ipproto +The number of times a packet with a request for receive or transmit checksum +offloading was received where the IP protocol was neither TCP nor UDP. +.It Va dev.vtnet. Ns Ar X Ns Va .rx_csum_bad_ethtype +The number of times a packet with a request for receive or transmit checksum +offloading was received where the EtherType was neither IPv4 nor IPv6. +.It Va dev.vtnet. Ns Ar X Ns Va .rx_mergeable_failed +The number of times receiving a mergable buffer failed. +.It Va dev.vtnet. Ns Ar X Ns Va .rx_enq_replacement_failed +The number of times the enqueuing the replacement receive mbuf chain failed. +.It Va dev.vtnet. Ns Ar X Ns Va .rx_frame_too_large +The number of times the frame was loger than the mbuf chain during large +receive offload without mergeable buffers. +.It Va dev.vtnet. Ns Ar X Ns Va .mbuf_alloc_failed +The number of times an mbuf cluster allocation for the receive buffer failed. +.El +.Sh INTERFACE CONFIGURATION PARAMETER +For each interface the following read-only configuration parameters are +provided: +.Bl -tag -width "xxxxxx" +.It Va dev.vtnet. Ns Ar X Ns Va .act_vq_pairs +The number of active virtqueue pairs. +.It Va dev.vtnet. Ns Ar X Ns Va .req_vq_pairs +The number of requested virtqueue pairs. +.It Va dev.vtnet. Ns Ar X Ns Va .max_vq_pairs +The maximum number of supported virtqueue pairs. +.El .Sh SEE ALSO .Xr arp 4 , .Xr netintro 4 , diff --git a/share/man/man4/watchdog.4 b/share/man/man4/watchdog.4 index b74640de8469..fc2d600328dd 100644 --- a/share/man/man4/watchdog.4 +++ b/share/man/man4/watchdog.4 @@ -41,24 +41,22 @@ The device supports several optional .Xr ioctl 2 calls for configuration, and -responds to a single operational +responds to a set of operational .Xr ioctl 2 -call, -.Dv WDIOCPATPAT . -It takes a single argument which represents a timeout value specified as a -power of two nanoseconds, or-ed with a flag selecting active or passive control -of the watchdog. +calls: +.Bl -tag -width "WDIOC_CONTROL int " +.It Dv WDIOCPATPAT +Pat the watchdog. +.It Dv WDIOC_CONTROL +Enable, disable, or reset the watchdog. +.El .Pp -.Dv WD_ACTIVE -indicates that the -.Nm -will be kept from timing out from userland, for instance by the -.Xr watchdogd 8 -daemon. -.Dv WD_PASSIVE -indicates that the -.Nm -will be kept from timing out from the kernel. +The +.Dv WDIOCPATPAT +.Xr ioctl 2 +call takes a single argument which represents a timeout value specified as a +.Vt sbintime_t +of the timeout period for the watchdog. .Pp The .Dv WDIOCPATPAT @@ -77,27 +75,43 @@ none of implementations support the timeout length, all watchdogs are disabled and must be explicitly re-enabled. .Pp -To disable the watchdogs pass -.Dv WD_TO_NEVER . +To disable the watchdogs use the +.Dv WDIOC_CONTROL +.Xr ioctl 2 +call with the +.Dv WD_CTRL_DISABLE +flag. If disarming the watchdog(s) failed an error is returned. The watchdog might still be armed! +To reenable the watchdogs use the +.Dv WDIOC_CONTROL +.Xr ioctl 2 +call with the +.Dv WD_CTRL_ENABLE +flag. +Another way to pat the watchdog is with the +.Dv WDIOC_CONTROL +.Xr ioctl 2 +call passing the +.Dv WDIOC_CTRL_RESET +flag. .Pp The optional configuration .Xr ioctl 2 commands are listed here, along with the type of the parameter used. Examples of their use can be found in .Xr watchdogd 8 . -.Bl -tag -width "WDIOC_SETSOFTTIMEOUTACT int " -.It Dv WDIOC_SETTIMEOUT Fa int +.Bl -tag -width "WDIOC_GETPRETTIMEOUT sbintime_t" +.It Dv WDIOC_SETTIMEOUT Fa sbintime_t set/reset the timer -.It Dv WDIOC_GETTIMEOUT Fa int +.It Dv WDIOC_GETTIMEOUT Fa sbintime_t get total timeout -.It Dv WDIOC_GETTIMELEFT Fa int +.It Dv WDIOC_GETTIMELEFT Fa sbintime_t get time left -.It Dv WDIOC_GETPRETIMEOUT Fa int +.It Dv WDIOC_GETPRETIMEOUT Fa sbintime_t get the pre-timeout -.It Dv WDIOC_SETPRETIMEOUT Fa int +.It Dv WDIOC_SETPRETIMEOUT Fa sbintime_t set the pre-timeout .It Dv WDIOC_SETPRETIMEOUTACT Fa int Set the action when a pre-timeout occurs (see diff --git a/share/man/man4/xl.4 b/share/man/man4/xl.4 index 309434154f4e..591703ac93cb 100644 --- a/share/man/man4/xl.4 +++ b/share/man/man4/xl.4 @@ -253,7 +253,6 @@ It is probably safe to ignore them. .Xr miibus 4 , .Xr netintro 4 , .Xr ng_ether 4 , -.Xr pccard 4 , .Xr polling 4 , .Xr ifconfig 8 .Sh HISTORY diff --git a/share/man/man4/zero.4 b/share/man/man4/zero.4 index f1cd52d455d1..85651d53d342 100644 --- a/share/man/man4/zero.4 +++ b/share/man/man4/zero.4 @@ -29,7 +29,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd April 7, 1996 +.Dd November 9, 2025 .Dt ZERO 4 .Os .Sh NAME @@ -48,6 +48,7 @@ supply of null bytes when read. .El .Sh SEE ALSO .Xr full 4 , +.Xr gzero 4 , .Xr null 4 .Sh HISTORY A diff --git a/share/man/man5/Makefile b/share/man/man5/Makefile index 0f6559b236c6..abf4b59d184b 100644 --- a/share/man/man5/Makefile +++ b/share/man/man5/Makefile @@ -43,20 +43,6 @@ MAN= a.out.5 \ style.mdoc.5 \ sysctl.conf.5 \ -.if ${MK_BLUETOOTH} != "no" -MAN+= bluetooth.device.conf.5 \ - bluetooth.hosts.5 \ - bluetooth.protocols.5 -.endif - -.if ${MK_FREEBSD_UPDATE} != "no" -MAN+= freebsd-update.conf.5 -.endif - -.if ${MK_HESIOD} != "no" -MAN+= hesiod.conf.5 -.endif - MLINKS= dir.5 dirent.5 MLINKS+=fs.5 inode.5 MLINKS+=hosts.equiv.5 rhosts.5 @@ -69,35 +55,46 @@ MANGROUPS+= ACCT ACCT= acct.5 ACCTPACKAGE= acct -MANGROUPS+= BOOTLOADER +MANGROUPS.${MK_BLUETOOTH}+= BLUETOOTH +BLUETOOTHPACKAGE= bluetooth +BLUETOOTH= bluetooth.device.conf.5 \ + bluetooth.hosts.5 \ + bluetooth.protocols.5 + +MANGROUPS+= BOOTLOADER +BOOTLOADERPACKAGE= bootloader BOOTLOADER= device.hints.5 -BOOTLOADERPACKAGE=bootloader -MANGROUPS+= CLANG -CLANG= ar.5 -CLANGPACKAGE= clang +MANGROUPS.${MK_FREEBSD_UPDATE}+= FREEBSD_UPDATE +FREEBSD_UPDATE= freebsd-update.conf.5 + +MANGROUPS.${MK_HESIOD}+= HESIOD +HESIOD= hesiod.conf.5 + +MANGROUPS.${MK_TOOLCHAIN}+= TOOLCHAIN +TOOLCHAINPACKAGE= toolchain +TOOLCHAIN= ar.5 -MANGROUPS+= LP +MANGROUPS+= LP +LPPACKAGE= lp LP= hosts.lpd.5 -LPPACKAGE= lp -MANGROUPS+= PERIODIC +MANGROUPS+= PERIODIC +PERIODICPACKAGE= periodic PERIODIC= periodic.conf.5 -PERIODICPACKAGE=periodic -.if ${MK_PF} != "no" -MANGROUPS+= PF +MANGROUPS.${MK_PF}+= PF +PFPACKAGE= pf PF= pf.conf.5 \ pf.os.5 -PFPACKAGE= pf -.endif -MANGROUPS+= RC +MANGROUPS+= RC +RCPACKAGE= rc RC= rc.conf.5 RCLINKS= rc.conf.5 rc.conf.local.5 -RCPACKAGE= rc -MANGROUPS+= RUNTIME +MANGROUPS+= RUNTIME +RUNTIMEPACKAGE= runtime RUNTIME= devfs.conf.5 \ devfs.rules.5 \ fstab.5 \ @@ -105,19 +102,18 @@ RUNTIME= devfs.conf.5 \ RUNTIMELINKS= passwd.5 master.passwd.5 RUNTIMELINKS+= passwd.5 pwd.db.5 RUNTIMELINKS+= passwd.5 spwd.db.5 -RUNTIMEPACKAGE= runtime -MANGROUPS+= SMB +MANGROUPS+= SMB +SMBPACKAGE= smbutils SMB= nsmb.conf.5 -SMBPACKAGE= smbutils -MANGROUPS+= SSH +MANGROUPS.${MK_OPENSSH}+= SSH +SSHPACKAGE= ssh SSH= moduli.5 -SSHPACKAGE= ssh -MANGROUPS+= UFS +MANGROUPS+= UFS +UFSPACKAGE= ufs UFS= fs.5 -UFSPACKAGE= ufs # This makes more sense for amd64 and i386 but # we decide to install all manpages in all architectures diff --git a/share/man/man5/boot.config.5 b/share/man/man5/boot.config.5 index 0b6d4c7b34e9..ddc232952f10 100644 --- a/share/man/man5/boot.config.5 +++ b/share/man/man5/boot.config.5 @@ -21,12 +21,12 @@ .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. -.Dd October 12, 2020 +.Dd November 14, 2025 .Dt BOOT.CONFIG 5 .Os .Sh NAME .Nm boot.config -.Nd "Configuration file for the boot blocks" +.Nd "Configuration file for the legacy boot blocks" .Sh DESCRIPTION The .Nm @@ -34,9 +34,9 @@ file contains options for the .Fx boot block code. .Pp -When the +When the first- and second-stage .Fx -boot loader runs, it searches the +boot loaders run, they search the .Dq Li a slice of the boot partition for a .Nm diff --git a/share/man/man5/group.5 b/share/man/man5/group.5 index 044164a3c955..8f7c59c59d52 100644 --- a/share/man/man5/group.5 +++ b/share/man/man5/group.5 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd February 8, 2013 +.Dd August 29, 2025 .Dt GROUP 5 .Os .Sh NAME @@ -145,6 +145,7 @@ may still have this limit. .Sh SEE ALSO .Xr newgrp 1 , .Xr passwd 1 , +.Xr setcred 2 , .Xr setgroups 2 , .Xr crypt 3 , .Xr getgrent 3 , diff --git a/share/man/man5/periodic.conf.5 b/share/man/man5/periodic.conf.5 index a2ed2b09d772..8910895d9b89 100644 --- a/share/man/man5/periodic.conf.5 +++ b/share/man/man5/periodic.conf.5 @@ -981,7 +981,7 @@ since yesterday's check. Space-separated list of additional anchors whose denied packets log entries to show. The main ruleset (i.e., the empty-string anchor) and any -.Xr blacklistd 8 +.Xr blocklistd 8 anchors, if present, are always shown. .It Va security_status_pfdenied_period .Pq Vt str diff --git a/share/man/man5/pf.conf.5 b/share/man/man5/pf.conf.5 index a9ae823257a4..c22d983d33e8 100644 --- a/share/man/man5/pf.conf.5 +++ b/share/man/man5/pf.conf.5 @@ -27,7 +27,7 @@ .\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd July 30, 2025 +.Dd November 3, 2025 .Dt PF.CONF 5 .Os .Sh NAME @@ -92,14 +92,20 @@ keyword, for example: include "/etc/pf/sub.filter.conf" .Ed .Sh MACROS -Macros can be defined that will later be expanded in context. -Macro names must start with a letter, and may contain letters, digits -and underscores. -Macro names may not be reserved words (for example +A macro is defined with a command of the form +.Ar name Ns = Ns Ar value . +The macro +.Ar name +can contain letters, digits, and underscores and cannot be a reserved word +(for example, .Ar pass , .Ar in , +or .Ar out ) . -Macros are not expanded inside quotes. +Within unquoted arguments, the string +.Pf $ Ar name +is later expanded to +.Ar value . Ranges of network addresses used in macros that will be expanded in lists later on must be quoted with additional simple quotes. .Pp @@ -267,6 +273,10 @@ which corresponds to the connection state. Each packet which matches this state will reset the TTL. Tuning these values may improve the performance of the firewall at the risk of dropping valid idle connections. +Alternatively, these values may be adjusted collectively +in a manner suitable for a specific environment using +.Cm set optimization +(see above). .Pp .Bl -tag -width xxxx -compact .It Ar tcp.first @@ -274,6 +284,9 @@ The state after the first packet. .It Ar tcp.opening The state after the second packet but before both endpoints have acknowledged the connection. +.It Ar tcp.tsdiff +Maximum allowed time difference between RFC 1323 compliant packet timestamps. +30 seconds by default. .It Ar tcp.established The fully established state. .It Ar tcp.closing @@ -1477,7 +1490,7 @@ options and both implicitly and explicitly in the case of ones. A .Ar rdr-to -opion may cause the source port to be modified if doing so avoids a conflict +option may cause the source port to be modified if doing so avoids a conflict with an existing connection. A random source port in the range 50001-65535 is chosen in this case. Port numbers are never translated with a @@ -2245,6 +2258,13 @@ When the rate is exceeded, all ICMP is blocked until the rate falls below .It Ar max-pkt-size Aq Ar number Limit each packet to be no more than the specified number of bytes. This includes the IP header, but not any layer 2 header. +.It Ar once +Create a one shot rule. +The first matching packet marks the rule as expired. +Expired rules are skipped and hidden, unless +.Xr pfctl 8 +is used in debug or verbose mode. +.Pp .It Xo Ar queue Aq Ar queue .No \*(Ba ( Aq Ar queue , .Aq Ar queue ) @@ -2357,7 +2377,7 @@ packets matching the same connection. .It Ar route-to The .Ar route-to -option routes the packet to the specified interface with an optional address +option routes the packet to the specified interface with an address for the next hop. When a .Ar route-to @@ -2470,7 +2490,13 @@ NAT address and port. This feature implements "full-cone" NAT behavior. .El .Pp -Additionally, the +Additionally, options +.Ar sticky-address +and +.Ar prefer-ipv6-nexthop +can be specified to influence how IP addresses selected from pools. +.Pp +The .Ar sticky-address option can be specified to help ensure that multiple connections from the same source are mapped to the same redirection address. @@ -2486,6 +2512,14 @@ beyond the lifetime of the states, increase the global options with See .Sx STATEFUL TRACKING OPTIONS for more ways to control the source tracking. +.Pp +The +.Ar prefer-ipv6-nexthop +option allows for IPv6 addresses to be used as the nexthop +for IPv4 packets routed with the +.Ar route-to +rule option. If a table is used with IPv4 and IPv6 addresses, first the IPv6 addresses +will be used in round-robin fashion, then IPv4 addresses. .Sh STATE MODULATION Much of the security derived from TCP is attributable to how well the initial sequence numbers (ISNs) are chosen. @@ -3416,7 +3450,7 @@ filteropt = user | group | flags | icmp-type | icmp6-type | "tos" tos | [ "(" state-opts ")" ] | "fragment" | "no-df" | "min-ttl" number | "set-tos" tos | "max-mss" number | "random-id" | "reassemble tcp" | - fragmentation | "allow-opts" | + fragmentation | "allow-opts" | "once" | "label" string | "tag" string | [ "!" ] "tagged" string | "max-pkt-rate" number "/" seconds | "set prio" ( number | "(" number [ [ "," ] number ] ")" ) | @@ -3426,6 +3460,12 @@ filteropt = user | group | flags | icmp-type | icmp6-type | "tos" tos | "dnpipe" ( number | "(" number "," number ")" ) | "dnqueue" ( number | "(" number "," number ")" ) | "ridentifier" number | + "binat-to" ( redirhost | "{" redirhost-list "}" ) + [ portspec ] [ pooltype ] | + "rdr-to" ( redirhost | "{" redirhost-list "}" ) + [ portspec ] [ pooltype ] | + "nat-to" ( redirhost | "{" redirhost-list "}" ) + [ portspec ] [ pooltype ] [ "static-port" ] | [ ! ] "received-on" ( interface-name | interface-group ) nat-rule = [ "no" ] "nat" [ "pass" [ "log" [ "(" logopts ")" ] ] ] @@ -3518,7 +3558,7 @@ hosts = "all" | ipspec = "any" | host | "{" host-list "}" host = [ "!" ] ( address [ "/" mask-bits ] | "<" string ">" ) redirhost = address [ "/" mask-bits ] -routehost = "(" interface-name [ address [ "/" mask-bits ] ] ")" +routehost = "(" interface-name address [ "/" mask-bits ] ")" address = ( interface-name | interface-group | "(" ( interface-name | interface-group ) ")" | hostname | ipv4-dotted-quad | ipv6-coloned-hex ) @@ -3566,7 +3606,7 @@ fragmentation = [ "fragment reassemble" ] timeout-list = timeout [ [ "," ] timeout-list ] timeout = ( "tcp.first" | "tcp.opening" | "tcp.established" | - "tcp.closing" | "tcp.finwait" | "tcp.closed" | + "tcp.closing" | "tcp.finwait" | "tcp.closed" | "tcp.tsdiff" | "sctp.first" | "sctp.opening" | "sctp.established" | "sctp.closing" | "sctp.closed" | "udp.first" | "udp.single" | "udp.multiple" | @@ -3580,7 +3620,7 @@ limit-item = ( "states" | "frags" | "src-nodes" ) number pooltype = ( "bitmask" | "random" | "source-hash" [ ( hex-key | string-key ) ] | - "round-robin" ) [ sticky-address ] + "round-robin" ) [ sticky-address | prefer-ipv6-nexthop ] subqueue = string | "{" queue-list "}" queue-list = string [ [ "," ] string ] diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5 index de2181d638d1..fa8d8aab8c4e 100644 --- a/share/man/man5/rc.conf.5 +++ b/share/man/man5/rc.conf.5 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd July 15, 2025 +.Dd November 14, 2025 .Dt RC.CONF 5 .Os .Sh NAME @@ -190,6 +190,17 @@ Setting this option will bypass that check at boot time and always test whether or not the service is actually running. Enabling this option is likely to increase your boot time if services are enabled that utilize the force_depend check. +.It Ao Ar name Ac Ns Va _audit_user +.Pq Vt str +A user name or UID to use as the +.Xr audit 4 +user for the service. +Run the chrooted service under this system group. +By default, when an unprvileged user restarts a service using a utility +such as sudo or doas, the service's will audit session will point to the +unprivileged user, which may be undesirable. +In that case, this variable can be used to override the audit user using +.Xr setaudit 8 . .It Ao Ar name Ac Ns Va _chroot .Pq Vt str .Xr chroot 8 @@ -209,7 +220,6 @@ The value to run the service under. .It Ao Ar name Ac Ns Va _group .Pq Vt str -Run the chrooted service under this system group. Unlike the .Ao Ar name Ac Ns Va _user setting, this setting has no effect if the service is not chrooted. @@ -3867,27 +3877,6 @@ is set to these are the flags to pass to the .Xr sshd 8 daemon. -.It Va ftpd_program -.Pq Vt str -Path to the FTP server program -.Pa ( /usr/libexec/ftpd -is the default). -.It Va ftpd_enable -.Pq Vt bool -Set to -.Dq Li YES -to start -.Xr ftpd 8 -as a stand-alone daemon at system boot time. -.It Va ftpd_flags -.Pq Vt str -If -.Va ftpd_enable -is set to -.Dq Li YES , -these are the additional flags to pass to the -.Xr ftpd 8 -daemon. .It Va watchdogd_enable .Pq Vt bool If set to @@ -4584,20 +4573,16 @@ If set to .Dq Li YES , delays the start of network-reliant services until .Va netwait_if -is up and ICMP packets to a destination defined in +is up, duplicate address discovery (DAD) has completed, and ICMP +packets to a destination defined in .Va netwait_ip are flowing. -Link state is examined first, followed by +Link state is examined first, followed by DAD, then .Dq Li pinging an IP address to verify network usability. If no destination can be reached or timeouts are exceeded, network services are started anyway with no guarantee that the network is usable. -Use of this variable requires both -.Va netwait_ip -and -.Va netwait_if -to be set. .It Va netwait_ip .Pq Vt str Empty by default. @@ -4633,6 +4618,21 @@ interface if desired. Defines the total number of seconds to wait for link to become usable, polled at a 1-second interval. The default is 30. +.It Va netwait_dad +.Pq Vt str +Set to +.Dq Li NO +by default. +Set to +.Dq Li YES +to enable waiting for DAD to complete. +.It Va netwait_dad_timeout +.Pq Vt int +Unset by default. +Indicates the maximum number of seconds to wait for DAD to complete. +If zero or unset, the timeout will be one more than the value of the +.Va net.inet6.ip6.dad_count +sysctl variable. .It Va rctl_enable .Pq Vt bool If set to @@ -4960,7 +4960,7 @@ can be used in jails) depending on the content of the .Ao Ar name Ac Ns Va _svcj_options variable. Typically this variable is set inside rc scripts, but it can be -overriden in the rc config. +overridden in the rc config. Valid options for .Ao Ar name Ac Ns Va _svcj_options are: @@ -5051,7 +5051,7 @@ service at all, or may set it to if it is not set in the rc config, to exclude it from .Va svcj_all_enable -but allow to explicitely enable it. +but allow to explicitly enable it. The sshd service for example would not see other jails, if it would run as a service jail. This may or may not be what is needed, and as such it is @@ -5116,7 +5116,6 @@ to .Xr cron 8 , .Xr devfs 8 , .Xr dhclient 8 , -.Xr ftpd 8 , .Xr geli 8 , .Xr hcsecd 8 , .Xr ifconfig 8 , diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5 index 2e694bfe3293..bab2c3d84abf 100644 --- a/share/man/man5/src.conf.5 +++ b/share/man/man5/src.conf.5 @@ -1,5 +1,5 @@ .\" DO NOT EDIT-- this file is @generated by tools/build/options/makeman. -.Dd August 8, 2025 +.Dd October 22, 2025 .Dt SRC.CONF 5 .Os .Sh NAME @@ -29,8 +29,11 @@ variables that control the aspects of how the system builds. .Pp The default location of .Nm -is -.Pa /etc/src.conf , +is the top level of the source tree, or +.Pa /etc/src.conf +if no +.Nm +is found in the source tree itself, though an alternative location can be specified in the .Xr make 1 variable @@ -223,10 +226,15 @@ options provide "full" Relocation Read-Only (RELRO) support. With full RELRO the entire GOT is made read-only after performing relocation at startup, avoiding GOT overwrite attacks. .It Va WITHOUT_BLACKLIST -Set this if you do not want to build -.Xr blacklistd 8 -and -.Xr blacklistctl 8 . +This option has been renamed to +.Va WITHOUT_BLOCKLIST . +When set, it enforces these options: +.Pp +.Bl -item -compact +.It +.Va WITHOUT_BLOCKLIST +.El +.Pp When set, these options are also in effect: .Pp .Bl -inset -compact @@ -234,13 +242,38 @@ When set, these options are also in effect: (unless .Va WITH_BLACKLIST_SUPPORT is set explicitly) +.It Va WITHOUT_BLOCKLIST_SUPPORT +(unless +.Va WITH_BLOCKLIST_SUPPORT +is set explicitly) .El .It Va WITHOUT_BLACKLIST_SUPPORT +This option has been renamed to +.Va WITHOUT_BLOCKLIST_SUPPORT . +When set, it enforces these options: +.Pp +.Bl -item -compact +.It +.Va WITHOUT_BLOCKLIST_SUPPORT +.El +.It Va WITHOUT_BLOCKLIST +Set this if you do not want to build +.Xr blocklistd 8 +and +.Xr blocklistctl 8 . +When set, these options are also in effect: +.Pp +.Bl -inset -compact +.It Va WITHOUT_BLOCKLIST_SUPPORT +(unless +.Va WITH_BLOCKLIST_SUPPORT +is set explicitly) +.El +.It Va WITHOUT_BLOCKLIST_SUPPORT Build some programs without -.Xr libblacklist 3 +.Xr libblocklist 3 support, like -.Xr fingerd 8 , -.Xr ftpd 8 , +.Xr fingerd 8 and .Xr sshd 8 . .It Va WITHOUT_BLUETOOTH @@ -411,8 +444,11 @@ Build clang-format. .It Va WITHOUT_CLANG_FULL Avoid building the ARCMigrate, Rewriter and StaticAnalyzer components of the Clang C/C++ compiler. -.It Va WITHOUT_CLEAN -Do not clean before building world and/or kernel. +.It Va WITH_CLEAN +Clean before building world and/or kernel. +Note that recording a new epoch in +.Pa .clean_build_epoch +in the root of the source tree will also force a clean world build. .It Va WITHOUT_CPP Do not build .Xr cpp 1 . @@ -449,8 +485,6 @@ When set, it enforces these options: .It .Va WITHOUT_KERBEROS .It -.Va WITHOUT_KERBEROS_SUPPORT -.It .Va WITHOUT_LDNS .It .Va WITHOUT_LDNS_UTILS @@ -477,9 +511,9 @@ When set, it enforces these options: When set, these options are also in effect: .Pp .Bl -inset -compact -.It Va WITHOUT_GSSAPI +.It Va WITHOUT_KERBEROS_SUPPORT (unless -.Va WITH_GSSAPI +.Va WITH_KERBEROS_SUPPORT is set explicitly) .El .It Va WITH_CTF @@ -716,9 +750,7 @@ Do not build .Xr freebsd-update 8 . .It Va WITHOUT_FTP Do not build or install -.Xr ftp 1 -and -.Xr ftpd 8 . +.Xr ftp 1 . .It Va WITHOUT_GAMES Do not build games. .It Va WITHOUT_GNU_DIFF @@ -736,8 +768,6 @@ and dependent tests. Do not build .Xr gpioctl 8 as part of the base system. -.It Va WITHOUT_GSSAPI -Do not build libgssapi. .It Va WITHOUT_HAST Do not build .Xr hastd 8 @@ -837,14 +867,10 @@ Do not build and .Xr truss 1 . .It Va WITHOUT_KERBEROS -Set this to not build Kerberos 5 (KTH Heimdal). +Set this to not build Kerberos. When set, these options are also in effect: .Pp .Bl -inset -compact -.It Va WITHOUT_GSSAPI -(unless -.Va WITH_GSSAPI -is set explicitly) .It Va WITHOUT_KERBEROS_SUPPORT (unless .Va WITH_KERBEROS_SUPPORT @@ -930,12 +956,12 @@ Do not build LLVM's lld linker. Do not build the LLDB debugger. .Pp This is a default setting on -arm/armv7 and riscv/riscv64. +riscv/riscv64. .It Va WITH_LLDB Build the LLDB debugger. .Pp This is a default setting on -amd64/amd64, arm64/aarch64, i386/i386, powerpc/powerpc64 and powerpc/powerpc64le. +amd64/amd64, arm/armv7, arm64/aarch64, i386/i386, powerpc/powerpc64 and powerpc/powerpc64le. .It Va WITHOUT_LLD_BOOTSTRAP Do not build the LLD linker during the bootstrap phase of the build. @@ -1217,8 +1243,8 @@ is set explicitly) .It Va WITHOUT_MANCOMPRESS Do not install compressed man pages. Only the uncompressed versions will be installed. -.It Va WITHOUT_MANSPLITPKG -Do not split man pages into their own packages during make package. +.It Va WITH_MANSPLITPKG +Split man pages into their own packages during make package. .It Va WITHOUT_MAN_UTILS Do not build utilities for manual pages, .Xr apropos 1 , @@ -1430,8 +1456,6 @@ When set, it enforces these options: .It .Va WITHOUT_KERBEROS .It -.Va WITHOUT_KERBEROS_SUPPORT -.It .Va WITHOUT_LDNS .It .Va WITHOUT_LDNS_UTILS @@ -1456,9 +1480,9 @@ When set, it enforces these options: When set, these options are also in effect: .Pp .Bl -inset -compact -.It Va WITHOUT_GSSAPI +.It Va WITHOUT_KERBEROS_SUPPORT (unless -.Va WITH_GSSAPI +.Va WITH_KERBEROS_SUPPORT is set explicitly) .El .It Va WITHOUT_OPENSSL_KTLS @@ -1485,10 +1509,9 @@ When set, these options are also in effect: is set explicitly) .El .It Va WITHOUT_PAM_SUPPORT -Build some programs without PAM support, particularly -.Xr ftpd 8 -and -.Xr ppp 8 . +Build +.Xr ppp 8 +without PAM support. .It Va WITHOUT_PF Do not build PF firewall package. When set, it enforces these options: diff --git a/share/man/man5/style.Makefile.5 b/share/man/man5/style.Makefile.5 index fe8754924575..9a2f1b069d99 100644 --- a/share/man/man5/style.Makefile.5 +++ b/share/man/man5/style.Makefile.5 @@ -1,7 +1,7 @@ .\" .\" SPDX-License-Identifier: BSD-3-Clause .\" -.\" Copyright (c) 2002-2003, 2023 David O'Brien <obrien@FreeBSD.org> +.\" Copyright (c) 2002-2003, 2023, 2025 David O'Brien <deo@NUXI.org> .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -28,7 +28,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd July 17, 2023 +.Dd October 29, 2025 .Dt STYLE.MAKEFILE 5 .Os .Sh NAME @@ -179,6 +179,21 @@ settings between the and .Fl I Ns 's. .It +Lists that span more than one line should be formatted as follows: +.Bd -literal -offset indent +SRCS+=<SP>\\ +<TAB>main.c<SP>\\ +<TAB>trace.c<SP>\\ +<TAB>zoo.c \\ +\& +.Ed +Specifically, the last item in the list should have a trailing '\\'. +This is to avoid causing a "false diff" or "false blame" when +a new item is appended at the end. +In general the list should be English language alphabetized. +A list of libraries or header inclusion paths are notable exceptions +if needed for proper building. +.It Do not use GCCisms (such as .Fl g and @@ -233,9 +248,6 @@ For variables that are only checked with .Fn defined , do not provide any fake value. .El -.Pp -The desire to express a logical grouping often means not obeying some of the -above. .Sh EXAMPLES The simplest program .Pa Makefile @@ -270,5 +282,7 @@ manual page and first appeared in .An David O'Brien Aq deo@NUXI.org .Sh BUGS There are few hard and fast style rules here. +The desire to express a logical grouping sometimes means not obeying some of the +above. The style of many things is too dependent on the context of the whole makefile, or the lines surrounding it. diff --git a/share/man/man5/style.mdoc.5 b/share/man/man5/style.mdoc.5 index 1c3ec2012118..2f8ea90ae21f 100644 --- a/share/man/man5/style.mdoc.5 +++ b/share/man/man5/style.mdoc.5 @@ -1,30 +1,9 @@ .\" -.\" SPDX-License-Identifier: BSD-2-Clause -.\" -.\" Copyright (c) 2018-2022 Mateusz Piotrowski <0mp@FreeBSD.org> +.\" Copyright (c) 2018-2025 Mateusz Piotrowski <0mp@FreeBSD.org> .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-License-Identifier: BSD-2-Clause .\" -.Dd December 21, 2024 +.Dd October 24, 2025 .Dt STYLE.MDOC 5 .Os .Sh NAME @@ -71,6 +50,9 @@ Historically, was the preferred way before the deprecation of .Sy \&Li . .El +.Ss Copyright Header +Refer to +.Xr style 9 . .Ss HARDWARE Section Driver manuals in section four should have a .Sx HARDWARE diff --git a/share/man/man7/Makefile b/share/man/man7/Makefile index 1e50242a1754..6a426cc29b15 100644 --- a/share/man/man7/Makefile +++ b/share/man/man7/Makefile @@ -1,5 +1,7 @@ .include <src.opts.mk> +MANGROUPS= MAN + #MISSING: eqnchar.7 ms.7 term.7 MAN= arch.7 \ ascii.7 \ @@ -21,6 +23,7 @@ MAN= arch.7 \ named_attribute.7 \ operator.7 \ orders.7 \ + freebsd-base.7 \ ports.7 \ release.7 \ sdoc.7 \ @@ -31,12 +34,12 @@ MAN= arch.7 \ stats.7 \ stdint.7 \ sticky.7 \ - tests.7 \ tracing.7 \ tuning.7 MLINKS= intro.7 miscellaneous.7 MLINKS+= growfs.7 growfs_fstab.7 +MLINKS+= freebsd-base.7 pkgbase.7 MLINKS+= security.7 securelevel.7 MLINKS+= c.7 c78.7 MLINKS+= c.7 c89.7 @@ -54,14 +57,21 @@ MLINKS+= networking.7 wifi.7 .endif .if ${MK_TESTS} != "no" -ATF= ${SRCTOP}/contrib/atf -.PATH: ${ATF}/doc -MAN+= atf.7 +MANGROUPS+= ATF TESTS + +TESTS= tests.7 +TESTSPACKAGE= tests + +ATF= atf.7 +ATFPACKAGE= atf + +ATFPATH= ${SRCTOP}/contrib/atf +.PATH: ${ATFPATH}/doc CLEANFILES+= atf.7 atf.7: atf.7.in sed -e 's,__DOCDIR__,/usr/share/doc/atf,g' \ - <"${ATF}/doc/atf.7.in" >atf.7 + <"${ATFPATH}/doc/atf.7.in" >atf.7 .endif .include <bsd.prog.mk> diff --git a/share/man/man7/arch.7 b/share/man/man7/arch.7 index fe4e8055a8b1..628d3837f011 100644 --- a/share/man/man7/arch.7 +++ b/share/man/man7/arch.7 @@ -24,7 +24,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd July 14, 2025 +.Dd November 27, 2025 .Dt ARCH 7 .Os .Sh NAME @@ -49,22 +49,35 @@ and later, unless otherwise noted. uses a flat address space. Variables of types .Vt unsigned long , -.Vt uintptr_t , +.Vt ptraddr_t , and .Vt size_t -and pointers all have the same representation. +have the same representation. .Pp In order to maximize compatibility with future pointer integrity mechanisms, manipulations of pointers as integers should be performed via .Vt uintptr_t or .Vt intptr_t -and no other types. -In particular, -.Vt long +and no other types as these types are the only integer types where the +C standard guarantees that a pointer may be cast to it and then cast back +to the original type. +On CHERI systems, +.Vt uintptr_t and -.Vt ptrdiff_t -should be avoided. +.Vt intptr_t +are defined as +.Vt __uintcap_t +and +.Vt __intcap_t +which represent capabilities that can be manipulated by integer operations. +Pointers should not be cast to +.Vt long , +.Vt ptrdiff_t , +or +.Vt size_t +if they will later be cast back to a pointer that is expected to be +dereferenceable as they remain bare integer types on all architectures. .Pp On some architectures, e.g., AIM variants of @@ -85,11 +98,13 @@ release to support each architecture. .Bl -column -offset indent "Architecture" "Initial Release" .It Sy Architecture Ta Sy Initial Release .It aarch64 Ta 11.0 +.It aarch64c Ta 16.0 (planned) .It amd64 Ta 5.1 .It armv7 Ta 12.0 .It powerpc64 Ta 9.0 .It powerpc64le Ta 13.0 .It riscv64 Ta 12.0 +.It riscv64c Ta 16.0 (planned) .El .Pp Discontinued architectures are shown in the following table. @@ -123,21 +138,33 @@ architectures use some variant of the ELF (see .Xr elf 5 ) .Sy Application Binary Interface (ABI) for the machine processor. -All supported ABIs can be divided into two groups: -.Bl -tag -width "Dv ILP32" +Supported ABIs can be divided into three main groups: +.Bl -tag -width "Dv L64PC128" .It Dv ILP32 .Vt int , +.Vt intptr_t , .Vt long , +and .Vt void * types machine representations all have 4-byte size. .It Dv LP64 .Vt int type machine representation uses 4 bytes, while -.Vt long +.Vt intptr_t , +.Vt long , and .Vt void * are 8 bytes. +.It Dv L64PC128 +.Vt int +type machine representation uses 4 bytes. +.Vt long +type machine representation uses 8 bytes. +.Vt intptr_t +and +.Vt void * +are 16 byte capabilities. .El .Pp Some machines support more than one @@ -163,15 +190,29 @@ will support execution of .Dv armv7 binaries if the CPU implements .Dv AArch32 -execution state, however older arm binaries are not supported by +execution state. +Binaries targeting +.Dv armv6 +and earlier are no longer supported by .Fx . .Pp +Architectures with 128-bit capabilities support both a +.Dq native +.Dv L64PC128 +execution environment and a +.Dv LP64 +environment: +.Bl -column -offset indent "aarch64c" "LP64 counterpart" +.It Sy L64PC128 Ta Sy LP64 counterpart +.It Dv aarch64c Ta Dv aarch64 +.It Dv riscv64c Ta Dv riscv64 +.El +.Pp On all supported architectures: .Bl -column -offset indent "long long" "Size" .It Sy Type Ta Sy Size .It short Ta 2 .It int Ta 4 -.It long Ta sizeof(void*) .It long long Ta 8 .It float Ta 4 .It double Ta 8 @@ -180,22 +221,24 @@ On all supported architectures: Integers are represented in two's complement. Alignment of integer and pointer types is natural, that is, the address of the variable must be congruent to zero modulo the type size. -Most ILP32 ABIs, except -.Dv arm , -require only 4-byte alignment for 64-bit integers. +The sole exception is that +.Dv i386 +requires only 4-byte alignment for 64-bit integers. .Pp Machine-dependent type sizes: -.Bl -column -offset indent "Architecture" "void *" "long double" "time_t" -.It Sy Architecture Ta Sy void * Ta Sy long double Ta Sy time_t -.It aarch64 Ta 8 Ta 16 Ta 8 -.It amd64 Ta 8 Ta 16 Ta 8 -.It armv7 Ta 4 Ta 8 Ta 8 -.It i386 Ta 4 Ta 12 Ta 4 -.It powerpc Ta 4 Ta 8 Ta 8 -.It powerpcspe Ta 4 Ta 8 Ta 8 -.It powerpc64 Ta 8 Ta 8 Ta 8 -.It powerpc64le Ta 8 Ta 8 Ta 8 -.It riscv64 Ta 8 Ta 16 Ta 8 +.Bl -column -offset indent "Architecture" "long" "void *" "long double" "time_t" +.It Sy Architecture Ta Sy long Ta Sy void * Ta Sy long double Ta Sy time_t +.It aarch64 Ta 8 Ta 8 Ta 16 Ta 8 +.It aarch64c Ta 8 Ta 16 Ta 16 Ta 8 +.It amd64 Ta 8 Ta 8 Ta 16 Ta 8 +.It armv7 Ta 4 Ta 4 Ta 8 Ta 8 +.It i386 Ta 4 Ta 4 Ta 12 Ta 4 +.It powerpc Ta 4 Ta 4 Ta 8 Ta 8 +.It powerpcspe Ta 4 Ta 4 Ta 8 Ta 8 +.It powerpc64 Ta 8 Ta 8 Ta 8 Ta 8 +.It powerpc64le Ta 8 Ta 8 Ta 8 Ta 8 +.It riscv64 Ta 8 Ta 8 Ta 16 Ta 8 +.It riscv64c Ta 8 Ta 16 Ta 16 Ta 8 .El .Pp .Sy time_t @@ -204,6 +247,7 @@ is 8 bytes on all supported architectures except i386. .Bl -column -offset indent "Architecture" "Endianness" "char Signedness" .It Sy Architecture Ta Sy Endianness Ta Sy char Signedness .It aarch64 Ta little Ta unsigned +.It aarch64c Ta little Ta unsigned .It amd64 Ta little Ta signed .It armv7 Ta little Ta unsigned .It i386 Ta little Ta signed @@ -212,11 +256,13 @@ is 8 bytes on all supported architectures except i386. .It powerpc64 Ta big Ta unsigned .It powerpc64le Ta little Ta unsigned .It riscv64 Ta little Ta signed +.It riscv64c Ta little Ta signed .El .Ss Page Size .Bl -column -offset indent "Architecture" "Page Sizes" .It Sy Architecture Ta Sy Page Sizes .It aarch64 Ta 4K, 64K, 2M, 1G +.It aarch64c Ta 4K, 64K, 2M, 1G .It amd64 Ta 4K, 2M, 1G .It armv7 Ta 4K, 1M .It i386 Ta 4K, 2M (PAE), 4M @@ -225,11 +271,13 @@ is 8 bytes on all supported architectures except i386. .It powerpc64 Ta 4K .It powerpc64le Ta 4K .It riscv64 Ta 4K, 2M, 1G +.It riscv64c Ta 4K, 2M, 1G .El .Ss User Address Space Layout .Bl -column -offset indent "riscv64 (Sv48)" "0x0001000000000000" "NNNU" .It Sy Architecture Ta Sy Maximum Address Ta Sy Address Space Size .It aarch64 Ta 0x0001000000000000 Ta 256TiB +.It aarch64c Ta 0x0001000000000000 Ta 256TiB .It amd64 (LA48) Ta 0x0000800000000000 Ta 128TiB .It amd64 (LA57) Ta 0x0100000000000000 Ta 64PiB .It armv7 Ta 0xbfc00000 Ta 3GiB @@ -239,7 +287,9 @@ is 8 bytes on all supported architectures except i386. .It powerpc64 Ta 0x000fffffc0000000 Ta 4PiB .It powerpc64le Ta 0x000fffffc0000000 Ta 4PiB .It riscv64 (Sv39) Ta 0x0000004000000000 Ta 256GiB +.It riscv64c (Sv39) Ta 0x0000004000000000 Ta 256GiB .It riscv64 (Sv48) Ta 0x0000800000000000 Ta 128TiB +.It riscv64c (Sv48) Ta 0x0000800000000000 Ta 128TiB .El .Pp The layout of a process' address space can be queried via the @@ -284,6 +334,7 @@ currently supports Sv39 and Sv48 and defaults to using Sv39. .Bl -column -offset indent "Architecture" "float, double" "long double" .It Sy Architecture Ta Sy float, double Ta Sy long double .It aarch64 Ta hard Ta soft, quad precision +.It aarch64c Ta hard Ta soft, quad precision .It amd64 Ta hard Ta hard, 80 bit .It armv7 Ta hard Ta hard, double precision .It i386 Ta hard Ta hard, 80 bit @@ -292,6 +343,7 @@ currently supports Sv39 and Sv48 and defaults to using Sv39. .It powerpc64 Ta hard Ta hard, double precision .It powerpc64le Ta hard Ta hard, double precision .It riscv64 Ta hard Ta hard, quad precision +.It riscv64c Ta hard Ta hard, quad precision .El .Ss Default Tool Chain .Fx @@ -318,12 +370,12 @@ when referring to the kernel, interfaces dependent on a specific type of kernel or similar things like boot sequences. .Bl -column -offset indent "Dv MACHINE" "Dv MACHINE_CPUARCH" "Dv MACHINE_ARCH" .It Dv MACHINE Ta Dv MACHINE_CPUARCH Ta Dv MACHINE_ARCH -.It arm64 Ta aarch64 Ta aarch64 +.It arm64 Ta aarch64 Ta aarch64, aarch64c .It amd64 Ta amd64 Ta amd64 .It arm Ta arm Ta armv7 .It i386 Ta i386 Ta i386 .It powerpc Ta powerpc Ta powerpc, powerpcspe, powerpc64, powerpc64le -.It riscv Ta riscv Ta riscv64 +.It riscv Ta riscv Ta riscv64, riscv64c .El .Ss Predefined Macros The compiler provides a number of predefined macros. @@ -337,20 +389,40 @@ cc -x c -dM -E /dev/null .Ed .Pp Common type size and endianness macros: -.Bl -column -offset indent "BYTE_ORDER" "Meaning" +.Bl -column -offset indent "__SIZEOF_POINTER__" "Meaning" .It Sy Macro Ta Sy Meaning +.It Dv __SIZEOF_LONG__ Ta size in bytes of long +.It Dv __SIZEOF_POINTER__ Ta size in bytes of intptr_t and pointers +.It Dv __SIZEOF_SIZE_T__ Ta size in bytes of size_t .It Dv __LP64__ Ta 64-bit (8-byte) long and pointer, 32-bit (4-byte) int .It Dv __ILP32__ Ta 32-bit (4-byte) int, long and pointer +.It Dv __CHERI__ Ta 128-bit (16-byte) capability pointer, 64-bit (8-byte) long .It Dv BYTE_ORDER Ta Either Dv BIG_ENDIAN or Dv LITTLE_ENDIAN . -.Dv PDP11_ENDIAN -is not used on -.Fx . .El .Pp +Because systems were historically either +.Dv __ILP32__ +or +.Dv __LP64__ +it has been common for programmers to test only one and assume the other +one in an else branch. +With the arrival of CHERI architectures, this is no longer the case. +.Dv __SIZEOF_*__ +macros should be used instead. +New uses of +.Dv __ILP32__ +and +.Dv __LP64__ +should be avoided. +Compilers for CHERI targets do not define +.Dv __LP64__ +as their pointers are 128-bit capabilities. +.Pp Architecture-specific macros: .Bl -column -offset indent "Architecture" "Predefined macros" .It Sy Architecture Ta Sy Predefined macros .It aarch64 Ta Dv __aarch64__ +.It aarch64c Ta Dv __aarch64__ , Dv __CHERI__ .It amd64 Ta Dv __amd64__ , Dv __x86_64__ .It armv7 Ta Dv __arm__ , Dv __ARM_ARCH >= 7 .It i386 Ta Dv __i386__ @@ -359,6 +431,7 @@ Architecture-specific macros: .It powerpc64 Ta Dv __powerpc__ , Dv __powerpc64__ .It powerpc64le Ta Dv __powerpc__ , Dv __powerpc64__ .It riscv64 Ta Dv __riscv , Dv __riscv_xlen == 64 +.It riscv64c Ta Dv __riscv , Dv __riscv_xlen == 64 , Dv __CHERI__ .El .Pp Compilers may define additional variants of architecture-specific macros. diff --git a/share/man/man7/build.7 b/share/man/man7/build.7 index 0aae2c42ac04..9adfd4bc8a63 100644 --- a/share/man/man7/build.7 +++ b/share/man/man7/build.7 @@ -1,4 +1,4 @@ -.\"- +.\" .\" SPDX-License-Identifier: BSD-2-Clause .\" .\" Copyright (c) 2000 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd March 8, 2025 +.Dd September 25, 2025 .Dt BUILD 7 .Os .Sh NAME @@ -36,34 +36,28 @@ system .Sh DESCRIPTION The sources for the .Fx -system and its applications are contained in three different directories, -normally -.Pa /usr/src , -.Pa /usr/doc , -and -.Pa /usr/ports . -These directories may be initially empty or non-existent until updated with -Git -.Po installed from packages with -.Xr pkg 7 -or from -.Xr ports 7 Pc . -Directory -.Pa /usr/src -contains the -.Dq "base system" -sources, which is loosely defined as the things required to rebuild -the system to a useful state. -Directory -.Pa /usr/doc -contains the source for the system documentation, excluding the manual -pages. -Directory -.Pa /usr/ports -contains a tree that provides a consistent interface for building and -installing third party applications. -For more information about the ports build process, see -.Xr ports 7 . +system and its applications are contained in three directories, +normally: +.Bl -tag -width "/usr/ports" +.It Pa /usr/src +.Dq base system , +loosely defined as everything required to build the system +to a useful state +.It Pa /usr/doc +system documentation, excluding manual pages +.It Pa /usr/ports +third-party software, with a consistent interface for building and +installing them; see +.Xr ports 7 +.El +.Pp +These directories may be initially empty or non-existent until updated +with Git +.Po Pa devel/git +from the +.Fx +Ports Collection +.Pc . .Pp The .Xr make 1 @@ -92,7 +86,9 @@ The canonical object directory is described in the documentation for the .Cm buildworld target below. .Pp -The build may be controlled by defining +The +.Nm +may be controlled by defining .Xr make 1 variables described in the .Sx ENVIRONMENT @@ -193,6 +189,20 @@ the compiler, linker, assembler, headers and libraries) has been built; see the .Cm toolchain target below. +.Pp +.Va BUILDENV_SHELL , +which defaults to +.Pa /bin/sh , +is executed. +This can be set to a command that does something in this build environment, +like cross build an application. +If that application has dependencies, though, the +.Pa devel/poudriere +package or port provides a more generic solution. +.It Cm buildenvvars +Print the shell variables that are set for a +.Cm buildenv +environment and exit. .It Cm buildworld Build everything but the kernel, configure files in .Pa etc , @@ -268,13 +278,31 @@ defaults to and .Sy TARGET_ARCH must be defined. +.It Cm packages +Create a +.Xr freebsd-base 7 +package repository containing packages that can be +used to install or upgrade the base system. +The repository is created in the object directory, under +.Pa ${REPODIR}/${PKG_ABI} +where +.Ev REPODIR +is the base directory where the repository will be created, and +.Va PKG_ABI +is the +.Xr pkg 7 +ABI for the build target, for example, +.Pa /usr/obj/${SRCDIR}/repo/FreeBSD:15:amd64 . .It Cm packageworld Archive the results of .Cm distributeworld , placing the results in .Va DISTDIR . -This target is used while building a release; see -.Xr release 7 . +This target is used while building a +.Xr release 7 +and is unrelated to building +.Xr freebsd-base 7 +packages. .It Cm installworld Install everything built by a preceding .Cm buildworld @@ -355,6 +383,14 @@ and .Va XDDIR defaults to .Pa ${TARGET_ARCH}-freebsd . +.It Cm update-packages +Create or update the +.Xr freebsd-base 7 +package repository for the base system. +If an old repository is being updated, +then packages whose contents have not changed since the previous version +will be copied into the new repository to avoid needless updating of the +version number. .It Cm xdev-build Builds for the .Cm xdev @@ -392,7 +428,7 @@ The target directory under .Pa ${DESTDIR} may be modified using the .Va INSTKERNNAME -and +or .Va KODIR .Xr make 1 variables. @@ -401,26 +437,16 @@ Install the kernel to the directory .Pa ${DISTDIR}/kernel/boot/kernel . This target is used while building a release; see .Xr release 7 . -.It Cm packages -Create a -.Xr pkg 7 -repository containing packages that can be used to create or upgrade an -installation of the base system. -The output repository is placed in the object directory, under -.Pa repo/${PKG_ABI} -where -.Va PKG_ABI -is the -.Xr pkg 7 -ABI for the build target, for example, -.Pa /usr/obj/${SRCDIR}/repo/FreeBSD:15:amd64 . .It Cm packagekernel Archive the results of .Cm distributekernel , placing the results in .Va DISTDIR . -This target is used while building a release; see -.Xr release 7 . +This target is used while building a +.Xr release 7 +and is unrelated to building +.Xr freebsd-base 7 +packages. .It Cm kernel Equivalent to .Cm buildkernel @@ -549,6 +575,9 @@ should be set to the name of the package. LLVM toolchain packages use the name llvm<major version>. GCC toolchains provide separate packages for each architecture and use the name ${MACHINE_ARCH}-gcc<major version>. +.It Va INSTKERNNAME +If set, specify an alternative name to build and install for the various +kernel make targets. .It Va KERNCONF Overrides which kernel to build and install for the various kernel make targets. @@ -583,6 +612,9 @@ then .Va KERNCONF is set to the value of .Va KERNFAST . +.It Va KODIR +If set, +this variable specifies an alternative directory to install the kernel. .It Va LOCAL_DIRS If set, this variable supplies a list of additional directories relative to the root of the source tree to build as part of the @@ -642,11 +674,15 @@ If set, this variable supplies a list of additional directories relative to the root of the source tree to build as part of the .Cm cross-tools target. +.It Va OBJROOT +The object directory root is defined as +.Pa ${OBJDIR}/${SRCDIR}/ . +See +.Pa share/mk/src.sys.obj.mk . .It Va PKG_FORMAT Specify a package compression format when building -.Pa src -into -.Cm packages . +.Xr freebsd-base 7 +packages. Default: .Ql tzst . Consider using @@ -664,11 +700,14 @@ and .Cm installkernel process. This is currently incompatible with building -.Pa src -into -.Cm packages . -.Bd -literal -offset indent -make PORTS_MODULES=emulators/virtualbox-ose-kmod kernel +.Xr freebsd-base 7 +packages. +Each port must be specified as +.Ar category Ns Li / Ns Ar port Ns Op Li @ Ns Ar flavor , +e.g. +.Bd -literal +PORTS_MODULES=graphics/gpu-firmware-intel-kmod@kabylake +PORTS_MODULES+=graphics/drm-66-kmod .Ed .It Va LOCAL_MODULES A list of external kernel modules that should be built and installed @@ -691,6 +730,13 @@ Specify a file to override the default The src.conf file controls the components to build. See .Xr src.conf 5 +.It Va REPODIR +The root directory used to create the package repository for building +.Xr packages 7 . +Defaults to +.Pa ${OBJROOT}/repo/ . +This can also be set in +.Xr src-env.conf 5 . .It Va STRIPBIN Command to use at install time when stripping binaries. Be sure to add any additional tools required to run @@ -927,26 +973,159 @@ fringe uses that do not have a wide appeal. .It Pa /usr/doc/share/mk/doc.project.mk .It Pa /usr/ports/Mk/bsd.port.mk .It Pa /usr/ports/Mk/bsd.sites.mk -.It Pa /usr/share/examples/etc/make.conf .It Pa /usr/src/Makefile .It Pa /usr/src/Makefile.inc1 +.Xr make 1 +infrastructure for each tree +.It Pa /usr/ports/UPDATING +.It Pa /usr/src/UPDATING +notable changes in each tree +.It Pa /usr/share/examples/etc/make.conf +example +.Xr make.conf 5 +.It Pa /etc/src.conf +src build configuration, see +.Xr src.conf 5 .El .Sh EXAMPLES -For an -.Dq approved -method of updating your system from the latest sources, please see the -.Sx COMMON ITEMS -section in -.Pa src/UPDATING . +This section describes best practices for common situations. +When manual intervention is necessary, it will be mentioned in +.Pa UPDATING . +Make sure you have full backups before proceeding! +.Ss Example 1: Build and upgrade system in place +If using installed drivers such as graphics or virtual machine guest +drivers, check out the +.Xr ports 7 +tree, and specify the drivers in +.Xr src.conf 5 +so they are built and installed automatically after the kernel: +.Bd -literal -offset indent +git clone https://git.FreeBSD.org/ports.git /usr/ports +cat << EOF >> /etc/src.conf +PORTS_MODULES+=graphics/drm-kmod emulators/virtualbox-ose-kmod +EOF +.Ed +.Pp +Check out the CURRENT branch, build it, and install, +overwriting the current system: +.Bd -literal -offset indent +git clone https://git.FreeBSD.org/src.git /usr/src +cd /usr/src +make buildworld buildkernel +make installkernel +shutdown -r now +.Ed .Pp -The following sequence of commands can be used to cross-build the system for -the arm64 (aarch64) architecture on a different host architecture, such as -amd64: +For major version upgrades, boot into single-user mode. +After restarting, install userspace, and merge configurations. +After verifying that you do not need them, delete old files +and libraries: .Bd -literal -offset indent cd /usr/src -make TARGET=arm64 buildworld buildkernel -make TARGET=arm64 DESTDIR=/clients/arm64 installworld installkernel +etcupdate -p +make installworld +etcupdate -B +make delete-old delete-old-libs +shutdown -r now +.Ed +.Ss Example 2: Build and upgrade a custom kernel in place +Create a custom kernel configuration, +.Va MYKERNEL , +by including an existing configuration and using +.Cm device Ns / Ns Cm nodevice +and +.Cm options Ns / Ns Cm nooption +to select and configure components: +.Bd -literal -offset indent +cd /usr/src +cat << EOF > sys/amd64/conf/MYKERNEL +include GENERIC +ident MYKERNEL +nodevice sound +EOF +.Ed +.Pp +After creating the new kernel configuration, build a fresh toolchain, +build the kernel, and install it, moving the old kernel to +.Pa /boot/kernel.old/ : +.Bd -literal -offset indent +make kernel-toolchain +make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=MYKERNEL +make -DALWAYS_CHECK_MAKE installkernel KERNCONF=MYKERNEL +shutdown -r now +.Ed +.Pp +To build the kernel to an alternate location, use the +.Va INSTKERNNAME +variable and boot it once to test via +.Xr nextboot 8 : +.Bd -literal -offset indent +make installkernel KERNCONF=MYKERNEL INSTKERNNAME=testkernel +nextboot -k testkernel +shutdown -r now .Ed +.Ss Example 3: Build and upgrade a single piece of userspace +Rebuild and reinstall a single piece of userspace, in this case +.Xr ls 1 : +.Bd -literal -offset indent +cd /usr/src/bin/ls +make clean all +make install +.Ed +.Ss Example 4: Build and upgrade a loadable kernel module +Rebuild and reinstall a single loadable kernel module, in this case +.Xr sound 4 : +.Bd -literal -offset indent +cd /usr/src/sys/modules/sound +make all install clean cleandepend KMODDIR=/boot/kernel +.Ed +.Ss Example 5: Quickly rebuild a kernel in place +Quickly rebuild and reinstall the kernel, only recompiling the files +changed since last build; note that this will only work if the full +kernel build has been completed in the past, not on a fresh source tree: +.Bd -literal -offset indent +cd /usr/src +make kernel KERNFAST=1 +.Ed +.Ss Example 6: Cross-compiling for different architectures +To rebuild parts of +.Fx +for another CPU architecture, +first prepare your source tree by building the cross-toolchain: +.Bd -literal -offset indent +cd src +make toolchain TARGET_ARCH=aarch64 +.Ed +.Pp +The following sequence of commands can be used to cross-build the system +for the arm64 (aarch64) architecture on a different host architecture, +such as amd64: +.Bd -literal -offset indent +cd /usr/src +make TARGET_ARCH=aarch64 buildworld buildkernel +make TARGET_ARCH=aarch64 DESTDIR=/armclient installworld installkernel +.Ed +.Pp +Afterwards, to build and install a single piece of userspace, use: +.Bd -literal -offset indent +cd src/bin/ls +make buildenv TARGET_ARCH=aarch64 +make clean all install DESTDIR=/armclient +.Ed +.Pp +Likewise, to quickly rebuild and reinstall the kernel, use: +.Bd -literal -offset indent +cd src +make buildenv TARGET_ARCH=aarch64 +make kernel KERNFAST=1 DESTDIR=/armclient +.Ed +.Sh DIAGNOSTICS +.Bl -diag +.It Bad system call (core dumped) +.It rescue/sh check failed, installation aborted +.Pp +The kernel was not updated due to incorrect build procedure. +Study the examples above. .Sh SEE ALSO .Xr cc 1 , .Xr install 1 , @@ -955,13 +1134,14 @@ make TARGET=arm64 DESTDIR=/clients/arm64 installworld installkernel .Xr src.conf 5 , .Xr arch 7 , .Xr development 7 , +.Xr freebsd-base 7 , .Xr pkg 7 , .Xr ports 7 , .Xr release 7 , .Xr tests 7 , .Xr config 8 , .Xr etcupdate 8 , -.Xr reboot 8 , +.Xr nextboot 8 , .Xr shutdown 8 .Sh HISTORY The @@ -970,3 +1150,23 @@ manpage first appeared in .Fx 4.3 . .Sh AUTHORS .An Mike W. Meyer Aq Mt mwm@mired.org +.Sh CAVEATS +Old objects can cause obscure build problems; try +.Ql make cleandir cleandir . +.Pp +Environment poisioning can cause obscure build problems; try prefixing +.Xr make 1 +commands with +.Ql env -i +.Pp +When doing a major release upgrade, +booting into single user mode for +.Cm installworld +is required. +.Pp +Updating the boot +.Xr loader 8 +is architecture specific. +Consult +.Xr boot 8 +for your architecture for more details. diff --git a/share/man/man7/d.7 b/share/man/man7/d.7 index f4686d98b1d1..59b3389b121b 100644 --- a/share/man/man7/d.7 +++ b/share/man/man7/d.7 @@ -3,7 +3,7 @@ .\" .\" Copyright (c) 2025 Mateusz Piotrowski <0mp@FreeBSD.org> .\" -.Dd June 14, 2025 +.Dd October 28, 2025 .Dt D 7 .Os .Sh NAME @@ -18,12 +18,14 @@ .Sm on .Sm off .Oo +.Oo .Cm / .Ar predicate .Cm / .Sm on .Oc -.Op Cm \&{ Ns Ar action Ns Cm \&} +.Cm \&{ Ns Ar action Ns Cm \&} +.Oc .Sh DESCRIPTION .Nm D is the @@ -54,9 +56,9 @@ depends on .Bl -column "thread-local" "Syntax" .It Sy Type Ta Sy Syntax .It global Ta Va variable_name +.It aggregate Ta Sy @ Ns Va variable_name .It thread-local Ta Sy self-> Ns Va variable_name .It clause-local Ta Sy this-> Ns Va variable_name -.It aggregate Ta Sy @ Ns Va variable_name .El .Pp .Em Tips : @@ -196,6 +198,130 @@ The number of nanoseconds since the Epoch Suitable for timestamping logs. .El .Sh BUILT-IN FUNCTIONS +.\" Keep the indentation wide enough for the reader to be able to skim through +.\" function names quickly. +.Bl -tag -width "size_t strlen" +.It Ft string Fn strchr "string s" "char c" +Return a substring of +.Fa s +starting at the first occurance of +.Fa c +in +.Fa s . +Return +.Dv NULL +if +.Fa c +does not occur in +.Fa s . +.Pp +For example, +.Bd -literal -compact -offset indent +strchr("abc", 'b'); +.Ed +returns +.Ql "bc" +and +.Bd -literal -compact -offset indent +strchr("abc", 'd'); +.Ed +returns +.Dv NULL . +.It Ft string Fn strjoin "string s1" "string s2" +Return a string resulting from concatenating +.Fa s1 +and +.Fa s2 . +.Pp +For example, +.Bd -literal -compact -offset indent +strjoin("abc", "def") +.Ed +returns +.Ql abcdef . +.It Ft string Fn strrchr "string s" "char c" +Return a substring of +.Fa s +starting at the last occurance of +.Fa c +in +.Fa s . +Similar to +.Fn strchr . +.It Ft string Fn strstr "string haystack" "string needle" +Return a substring of +.Fa haystack +starting at the first occurrence of +.Fa needle . +Return +.Dv NULL +if +.Fa needle +is not a substring of +.Fa haystack . +.Pp +For example, +.Bd -literal -compact -offset indent +strstr("abc1bc2", "bc") +.Ed +returns +.Ql bc1bc2 +and +.Bd -literal -compact -offset indent +strstr("abc", "xy") +.Ed +returns +.Dv NULL . +.It Ft string Fn strtok "string s" "string separators" +Tokenize +.Fa s +with +.Fa separators . +.Pp +For example, +.Bd -literal -compact -offset indent +strtok("abcdefg", "xyzd") +.Ed +returns +.Ql abc . +.It Ft size_t Fn strlen "string s" +Return the length of string +.Fa s . +.It Ft string Fn substr "string s" "int position" "[int length]" +Return a +substring of string +.Fa s +starting at +.Fa position . +The substring will be at most +.Fa length Ns -long . +If +.Fa length +is not specified, use the rest of the string. +If +.Fa position +is greater than +the size of +.Fa s , +return an empty string. +.Pp +For example, +.Bd -literal -compact -offset indent +substr("abcd", 2) +.Ed +returns +.Ql cd , +.Bd -literal -compact -offset indent +substr("abcd", 2, 1) +.Ed +returns +.Ql c , +and +.Bd -literal -compact -offset indent +substr("abcd", 99) +.Ed +returns an empty string. +.El .Ss Aggregation Functions .Bl -tag -compact -width "llquantize(value, factor, low, high, nsteps)" .It Fn avg value diff --git a/share/man/man7/development.7 b/share/man/man7/development.7 index 1b875fb14bda..348302a50ee7 100644 --- a/share/man/man7/development.7 +++ b/share/man/man7/development.7 @@ -1,4 +1,4 @@ -.\"- +.\" .\" SPDX-License-Identifier: BSD-2-Clause .\" .\" Copyright (c) 2018 Edward Tomasz Napierala <trasz@FreeBSD.org> @@ -24,7 +24,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd January 19, 2025 +.Dd September 24, 2025 .Dt DEVELOPMENT 7 .Os .Sh NAME @@ -75,13 +75,14 @@ There is also a list of public, read-only Git mirrors at: The .Ql main Git branch represents CURRENT; -all changes are first committed to CURRENT and then usually cherry-picked -back to STABLE, which refers to Git branches such as -.Ql stable/13 . +all changes are first committed to CURRENT and then usually +cherry-picked back to STABLE, which refers to Git branches such as +.Ql stable/14 . Every few years a new STABLE is branched from CURRENT, with an incremented major version number. -Releases are then branched off STABLE and numbered with consecutive minor -numbers. +Releases are then branched off STABLE and numbered with consecutive +minor numbers such as +.Ql releng/14.3 .Pp The layout of the source tree is described in its .Pa README.md @@ -107,12 +108,16 @@ such as freebsd-arch@ and freebsd-hackers@: To get your patches integrated into the main .Fx repository use Phabricator; -it is a code review tool that allows other developers to review the changes, -suggest improvements, and, eventually, allows them to pick up the change and -commit it: +it is a code review tool that allows other developers to +review the changes, suggest improvements, and, eventually, +allows them to pick up the change and commit it: .Pp .Lk https://reviews.FreeBSD.org .Pp +Or Github: +.Pp +.Lk https://github.com/freebsd +.Pp To check the latest .Fx build and test status of CURRENT and STABLE branches, @@ -120,77 +125,41 @@ the continuous integration system is at: .Pp .Lk https://ci.FreeBSD.org .Sh FILES -.Bl -compact -tag -width "/usr/src/tools/tools/git/git-arc.sh" +.Bl -tag -compact -width "/usr/ports/devel/freebsd-git-devtools" .It Pa /usr/src/CONTRIBUTING.md .Fx contribution guidelines .It Pa /usr/src/tools/tools/git/git-arc.sh Phabricator review tooling +.It Pa /usr/ports/devel/freebsd-git-devtools +Phabricator review tooling as a port .El .Sh EXAMPLES -Check out the CURRENT branch, build it, and install, overwriting the current -system: -.Bd -literal -offset indent -git clone https://git.FreeBSD.org/src.git src -cd src -make -sj8 buildworld buildkernel installkernel -shutdown -r now -.Ed -.Pp -After reboot: -.Bd -literal -offset indent -cd src -make -j8 installworld -reboot -.Ed -.Pp -Rebuild and reinstall a single piece of userspace, in this -case -.Xr ls 1 : -.Bd -literal -offset indent -cd src/bin/ls -make clean all install -.Ed -.Pp -Rebuild and reinstall a single loadable kernel module, in this case -.Xr sound 4 : -.Bd -literal -offset indent -cd src/sys/modules/sound -make all install clean cleandepend KMODDIR=/boot/kernel -.Ed -.Pp -Quickly rebuild and reinstall the kernel, only recompiling the files -changed since last build; note that this will only work if the full kernel -build has been completed in the past, not on a fresh source tree: -.Bd -literal -offset indent -cd src -make -sj8 kernel KERNFAST=1 -.Ed -.Pp -To rebuild parts of -.Fx -for another CPU architecture, -first prepare your source tree by building the cross-toolchain: -.Bd -literal -offset indent -cd src -make -sj8 toolchain TARGET_ARCH=aarch64 -.Ed -.Pp -Afterwards, to build and install a single piece of userspace, use: -.Bd -literal -offset indent -cd src/bin/ls -make buildenv TARGET_ARCH=aarch64 -make clean all install DESTDIR=/clients/arm -.Ed -.Pp -Likewise, to quickly rebuild and reinstall the kernel, use: -.Bd -literal -offset indent -cd src -make buildenv TARGET_ARCH=aarch64 -make -sj8 kernel KERNFAST=1 DESTDIR=/clients/arm -.Ed +Apply a patch from Github pull #1234, using +.Pa devel/gh : +.Pp +.Dl gh pr checkout 1234 +.Pp +Apply a patch from Phabricator review D1234, using +.Xr git-arc 1 : +.Pp +.Dl git arc patch -c D1234 +.Pp +Apply a manually downloaded +.Xr git-format-patch 1 , +.Pa draft.patch , +from Bugzilla or mail: +.Pp +.Dl git am draft.patch +.Pp +Apply a manually downloaded patch, +.Pa draft.diff , +from Bugzilla or mail: +.Pp +.Dl git apply draft.diff .Sh SEE ALSO .Xr git 1 , +.Xr git-arc 1 , .Xr witness 4 , .Xr build 7 , .Xr hier 7 , diff --git a/share/man/man7/freebsd-base.7 b/share/man/man7/freebsd-base.7 new file mode 100644 index 000000000000..f84cc7239a1d --- /dev/null +++ b/share/man/man7/freebsd-base.7 @@ -0,0 +1,189 @@ +.\" SPDX-License-Identifier: ISC +.\" +.\" Copyright (c) 2025 Lexi Winter. +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +.\" +.Dd September 25, 2025 +.Dt FREEBSD-BASE 7 +.Os +.Sh NAME +.\" .Nm pkgbase +.Nm freebsd-base +.Nd base system packages +.Sh DESCRIPTION +The +.Fx +base system may be installed as a set of +.Xr pkg 8 +packages, which supersedes the traditional method of installing using +.Xr tar 1 +archives. +.Pp +All base packages have names beginning with the string +.Dq "FreeBSD-" , +and have an origin beginning with +.Dq base/ . +In the default system configuration, the repository containing these +packages is called +.Dq FreeBSD-base , +but any name may be used. +The repository name can be used with +.Xr pkg 8 +to restrict package operations to the base system packages. +.Pp +Packages for all supported +.Fx +releases as well as active +.Dq STABLE +and +.Dq CURRENT +.\" re@ will provide their own repository before release, at which +.\" point this text will need updating. +branches are hosted on the Internet at +.Lk https://pkg.freebsd.org . +These packages are updated when new errata or security updates are +released (for supported release versions), or twice daily for +development branches. +.Pp +Alternatively, packages may be built from the system source tree +according to the instructions in +.Xr build 7 , +allowing the system to be updated from source code using packages. +.Sh PACKAGE ORGANISATION +To allow customisation of the installed system, each package is split +into several subpackages which contain different components of the +package. +For the package +.Sy FreeBSD-foo , +the following subpackages may be available: +.Bl -column "FreeBSD-foo-dev-lib32" "Description" +.It Sy "Package name" Ta Sy "Description" +.It FreeBSD-foo Ta Base files for the package (typically executables) +.It FreeBSD-foo-lib Ta Native runtime libraries +.It FreeBSD-foo-lib32 Ta 32-bit compatibility runtime libraries +.It FreeBSD-foo-dev Ta Development files (headers and static libraries) +.It FreeBSD-foo-dev-lib32 Ta 32-bit development files +.It FreeBSD-foo-dbg Ta Debugging symbols +.It FreeBSD-foo-man Ta Manual pages. +Manual pages are only packaged separately if the +.Sy WITH_MANSPLITPKG +.Xr src.conf 5 +option was enabled when building the system, which is not the default. +.El +.Pp +The exact set of available subpackages differs for each individual +package. For example, some packages may not provide any development +files, in which case the +.Sy -dev +subpackage is not present. +.Sh PACKAGE SETS +Package sets are meta-packages which do not contain any files +themselves, but depend on a selection of other packages, such that each +package set allows the complete set of packages for a supported workload +to be installed. +.Pp +Package sets are provided as packages named +.Sy FreeBSD-set-<name> . +The following package sets are available in the base system: +.Bl -tag -width "minimal-jail" +.It minimal +The minimal set of packages required to bring up a multi-user +.Fx +system. +This includes the core system, along with packages required for +hardware support (such as +.Xr devmatch 8 +and downloadable firmware), and basic networking, including DHCP and +IEEE Std 802.11\(tm wireless networks. +.It minimal-jail +The equivalent of +.Sy minimal +for systems running in a +.Xr jail 8 +environment. +This set excludes hardware support not typically required for jails. +.It devel +Development tools, including C/C++ compilers, the link loader, and +other tools such as +.Xr ar 1 +and +.Xr nm 1 . +This set also includes native development files (headers and static +libraries) for all packages. +.It lib32 +32-compatibility libraries, for running 32-bit applications on a +64-bit host system. +This set includes both runtime libraries and development files. +.It base +The complete base system, excluding tests, the system source code, +and debugging symbols. +.It base-jail +The equivalent of +.Sy base +for systems running in a +.Xr jail 8 +environment. +This set excludes system functionality which typically does not work +or is not useful in a jail. +.It src +The system source tree for the userland and kernel, installed in +.Pa /usr/src . +.It tests +The system test suite, installed in +.Pa /usr/tests . +.It kernels +All available system kernels. +.El +.Sh EXAMPLES +Install the +.Xr vi 1 +text editor on the running system: +.Bd -literal -offset indent +pkg install FreeBSD-vi +.Ed +.Pp +Install a new +.Xr jail 8 +system using the +.Sy minimal-jail +package set: +.Bd -literal -offset indent +pkg -r /jails/myjail install FreeBSD-set-minimal-jail +.Ed +.Pp +Install C/C++ compilers on the running system: +.Bd -literal -offset indent +pkg install FreeBSD-set-devel +.Ed +.Pp +Apply available updates to the running system: +.Bd -literal -offset indent +pkg update -r FreeBSD-base +.Ed +.Pp +Install the development toolchain for FreeBSD/powerpc64le in an +alternate root (for example, to support cross-compiling software +for a different target than the host system): +.Bd -literal -offset indent +pkg -r /ppcdev -oABI=FreeBSD:16:powerpc64le \e + install -r FreeBSD-set-devel +.Ed +.Sh SEE ALSO +.Xr build 7 , +.Xr pkg 8 , +.Xr src.conf 5 +.Sh HISTORY +Support for installing the base system as packages was introduced in +.Fx 15.0 . +Earlier releases supported a subset of this functionality. diff --git a/share/man/man7/hier.7 b/share/man/man7/hier.7 index 1c69b911f53b..c438511678d4 100644 --- a/share/man/man7/hier.7 +++ b/share/man/man7/hier.7 @@ -28,7 +28,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd October 10, 2024 +.Dd September 25, 2025 .Dt HIER 7 .Os .Sh NAME @@ -308,6 +308,21 @@ OpenSSH configuration files; see .Xr ssh 1 .It Pa ssl/ OpenSSL configuration files +.Pp +.Bl -tag -width "untrusted/" -compact +.It Pa cert.pem +System trust store in bundle form; see +.Xr certctl 8 . +.It Pa certs/ +System trust store in OpenSSL hashed-directory form; see +.Xr certctl 8 . +.It Pa openssl.cnf +OpenSSL configuration file; see +.Xr openssl.cnf 5 . +.It Pa untrusted/ +Explicitly distrusted certificates; see +.Xr certctl 8 . +.El .It Pa sysctl.conf kernel state defaults; see .Xr sysctl.conf 5 @@ -877,9 +892,6 @@ last login log; see .It Pa utx.log login/logout log; see .Xr getutxent 3 -.It Pa xferlog -default log for -.Xr ftpd 8 .El .Pp .It Pa mail/ @@ -937,9 +949,6 @@ serial device locks; see .Xr uucplock 3 .It Pa lpd/ line printer spooler daemon spool -.It Pa ftp/ -ftp root directory; see -.Xr ftpd 8 .It Pa mqueue/ undelivered mail queue for .Xr sendmail 8 diff --git a/share/man/man7/ports.7 b/share/man/man7/ports.7 index b681a326f407..24c1eb4b7f51 100644 --- a/share/man/man7/ports.7 +++ b/share/man/man7/ports.7 @@ -25,7 +25,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd March 21, 2025 +.Dd November 6, 2025 .Dt PORTS 7 .Os .Sh NAME @@ -597,6 +597,10 @@ data. The default ports directory. .It Pa /usr/ports/Mk/bsd.port.mk The big Kahuna. +.It Pa /var/db/ports +The directory where the results of configuring +.Va OPTIONS +are stored. .El .Sh EXAMPLES .Bl -tag -width 0n @@ -683,7 +687,7 @@ WITH_DEBUG_PORTS= mail/dovecot security/krb5 .Pp It is also possible to use the debug variables on the command line: .Bd -literal -offset 2n -.Li # Ic make -DWITH_DEBUG DEBUG_FLAGS="-g -O0" build +.Li # Ic make WITH_DEBUG DEBUG_FLAGS="-g -O0" build .Ed .Pp See the diff --git a/share/man/man7/release.7 b/share/man/man7/release.7 index 36c14afe0bf1..2493a34721bc 100644 --- a/share/man/man7/release.7 +++ b/share/man/man7/release.7 @@ -1,3 +1,6 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" .\" Copyright (c) 2002 Murray Stokely <murray@FreeBSD.org> .\" All rights reserved. .\" @@ -22,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd May 20, 2025 +.Dd October 13, 2025 .Dt RELEASE 7 .Os .Sh NAME @@ -136,6 +139,8 @@ configuration file supports the following variables: .Bl -tag -width Ev .It Va CHROOTDIR The directory within which the release will be built. +Defaults to +.Pa /scratch . .It Va CHROOT_MAKEENV Additional .Xr make 1 @@ -286,6 +291,19 @@ is expected to exist by alternative means. Include base system packages for use with .Xr pkg 8 on the install media, instead of legacy tarball distribution sets. +.It Va PKG_CMD +A path to the +.Xr pkg 8 +executable to use when installing packages in release images as a non-root user. +.It Va PKG_REPOS_DIR +An optional path to a directory containing +.Xr pkg 8 +repository configuration files. +These configuration files will be used when installing packages in release +images as a non-root user. +.It Va PKG_REPO_NAME +The name of the repository configuration to use when installing packages in +release images as a non-root user. .El .Sh EMBEDDED BUILDS The following @@ -623,6 +641,7 @@ Typically, one only needs to set .El .Sh FILES .Bl -tag -compact -width Pa +.It Pa /scratch .It Pa /usr/doc/Makefile .It Pa /usr/doc/share/mk/doc.project.mk .It Pa /usr/ports/Mk/bsd.port.mk @@ -675,16 +694,10 @@ the Raspberry Pi, exist in the directory corresponding to the .Va TARGET .Xr make 1 variable. -For example, to build an image for the Raspberry Pi: -.Bd -literal -offset indent -cd /usr/src/release -sh release.sh -c arm/RPI-B.conf -.Ed -.Pp -To build an image for the Raspberry Pi 3: +For example, to build an image for 64-bit Raspberry Pis: .Bd -literal -offset indent cd /usr/src/release -sh release.sh -c arm64/RPI3.conf +sh release.sh -c arm64/RPI.conf .Ed .Pp After running these commands, all prepared release files are available in the diff --git a/share/man/man7/security.7 b/share/man/man7/security.7 index cdb4d066d3e6..f1035fd093d5 100644 --- a/share/man/man7/security.7 +++ b/share/man/man7/security.7 @@ -364,7 +364,6 @@ There are a number of other servers that typically do not run in sandboxes: .Xr sendmail 8 , .Xr popper 8 , .Xr imapd 8 , -.Xr ftpd 8 , and others. There are alternatives to some of these, but installing them may require more work than you are willing diff --git a/share/man/man7/simd.7 b/share/man/man7/simd.7 index d5092348d9b3..3343508df504 100644 --- a/share/man/man7/simd.7 +++ b/share/man/man7/simd.7 @@ -24,7 +24,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE . -.Dd November 18, 2024 +.Dd October 21, 2025 .Dt SIMD 7 .Os .Sh NAME @@ -50,38 +50,38 @@ can be used to override this mechanism. .Pp Enhanced functions are present for the following architectures: .Bl -column FUNCTION_________ aarch64_ arm_ amd64_ i386_ ppc64_ -offset indent -.It Em FUNCTION Ta Em AARCH64 Ta Em ARM Ta Em AMD64 Ta Em I386 Ta Em PPC64 +.It Em FUNCTION Ta Em AARCH64 Ta Em ARM Ta Em AMD64 Ta Em I386 Ta Em PPC64 Ta Em RISC-V .It bcmp Ta A Ta Ta S1 Ta S -.It bcopy Ta A Ta S Ta S Ta S Ta SV -.It bzero Ta A Ta S Ta S Ta S +.It bcopy Ta A Ta S Ta S Ta S Ta SV Ta S +.It bzero Ta A Ta S Ta S Ta S Ta Ta S .It div Ta Ta Ta S Ta S -.It index Ta A Ta Ta S1 +.It index Ta A Ta Ta S1 Ta Ta S .It ldiv Ta Ta Ta S Ta S .It lldiv Ta Ta Ta S -.It memchr Ta A Ta Ta S1 +.It memchr Ta A Ta Ta S1 Ta Ta Ta S .It memcmp Ta A Ta S Ta S1 Ta S .It memccpy Ta A Ta Ta S1 -.It memcpy Ta A Ta S Ta S Ta S Ta SV +.It memcpy Ta A Ta S Ta S Ta S Ta SV Ta S .It memmove Ta A Ta S Ta S Ta S Ta SV .It memrchr Ta A Ta Ta S1 -.It memset Ta A Ta S Ta S Ta S -.It rindex Ta A Ta Ta S1 Ta S +.It memset Ta A Ta S Ta S Ta S Ta Ta S +.It rindex Ta A Ta Ta S1 Ta S Ta Ta S .It stpcpy Ta A Ta Ta S1 .It stpncpy Ta Ta Ta S1 .It strcat Ta A Ta Ta S1 Ta S -.It strchr Ta A Ta Ta S1 Ta S -.It strchrnul Ta A Ta Ta S1 +.It strchr Ta A Ta Ta S1 Ta S Ta Ta S +.It strchrnul Ta A Ta Ta S1 Ta Ta Ta S .It strcmp Ta A Ta S Ta S1 Ta S .It strcpy Ta A Ta Ta S1 Ta S Ta S2 .It strcspn Ta S Ta Ta S2 .It strlcat Ta A Ta Ta S1 .It strlcpy Ta A Ta Ta S1 -.It strlen Ta A Ta S Ta S1 +.It strlen Ta A Ta S Ta S1 Ta Ta Ta S .It strncat Ta A Ta Ta S1 .It strncmp Ta A Ta S Ta S1 Ta S .It strncpy Ta Ta Ta S1 Ta Ta S2 -.It strnlen Ta A Ta Ta S1 -.It strrchr Ta A Ta Ta S1 Ta S +.It strnlen Ta A Ta Ta S1 Ta Ta Ta S +.It strrchr Ta A Ta Ta S1 Ta S Ta Ta S .It strpbrk Ta S Ta Ta S2 .It strsep Ta S Ta Ta S2 .It strspn Ta S Ta Ta S2 @@ -207,10 +207,13 @@ for .Fx 11.0 for .Cm aarch64 , -and .Fx 12.0 for -.Cm powerpc64 . +.Cm powerpc64 , +and +.Fx 16.0 +for +.Cm riscv64 . SIMD-enhanced functions were first added with .Fx 13.0 for diff --git a/share/man/man7/stats.7 b/share/man/man7/stats.7 index 715db70e118b..0b57d525522c 100644 --- a/share/man/man7/stats.7 +++ b/share/man/man7/stats.7 @@ -24,7 +24,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd April 22, 2021 +.Dd October 28, 2025 .Dt STATS 7 .Os .Sh NAME @@ -100,6 +100,7 @@ Report ZFS I/O statistics .Xr stat 1 , .Xr systat 1 , .Xr intro 7 , +.Xr tuning 7 , .Xr ctlstat 8 , .Xr gstat 8 , .Xr ibstat 8 , diff --git a/share/man/man7/tuning.7 b/share/man/man7/tuning.7 index ebba551f65d0..44c427c4559d 100644 --- a/share/man/man7/tuning.7 +++ b/share/man/man7/tuning.7 @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd January 23, 2025 +.Dd October 28, 2025 .Dt TUNING 7 .Os .Sh NAME @@ -678,6 +678,7 @@ over services you export from your box (web services, email). .Xr firewall 7 , .Xr hier 7 , .Xr ports 7 , +.Xr stats 7 , .Xr boot 8 , .Xr bsdinstall 8 , .Xr ccdconfig 8 , diff --git a/share/man/man8/debug.sh.8 b/share/man/man8/debug.sh.8 index bf0fdbd6bcf5..3b59d6ae2e78 100644 --- a/share/man/man8/debug.sh.8 +++ b/share/man/man8/debug.sh.8 @@ -143,7 +143,7 @@ and defaults to .It Ic DebugTrace Ar message Debug output can be very noisy, and it can be tricky to align with the script. -This function outputs a very noticable banner indicating the value of +This function outputs a very noticeable banner indicating the value of .Va DEBUG_ON , and .Ar message @@ -168,7 +168,7 @@ skipped/run when debugging is turned on. .Va DEBUGGING is the same as .Va DEBUG_SKIP -for backwards compatability and is only set by +for backwards compatibility and is only set by .Fn Debug . .Pp The use of diff --git a/share/man/man8/intro.8 b/share/man/man8/intro.8 index 39b72af5f741..bfa7d026afbb 100644 --- a/share/man/man8/intro.8 +++ b/share/man/man8/intro.8 @@ -52,8 +52,6 @@ and recover files when disks die an untimely death .\" consulted when formatting disks and tapes. Network related services like .Xr inetd 8 -and -.Xr ftpd 8 are also described. .Pp All commands set an exit status. diff --git a/share/man/man8/nanobsd.8 b/share/man/man8/nanobsd.8 index 838f9ddc9afa..44def2503b84 100644 --- a/share/man/man8/nanobsd.8 +++ b/share/man/man8/nanobsd.8 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd July 14, 2025 +.Dd September 9, 2025 .Dt NANOBSD 8 .Os .Sh NAME @@ -33,7 +33,7 @@ .Nd create an embedded FreeBSD system image .Sh SYNOPSIS .Nm -.Op Fl BbfhIiKknqvWwX +.Op Fl BbfhIiKknpqvWwX .Op Fl c Ar config-file .Sh DESCRIPTION The @@ -42,7 +42,7 @@ utility is a script which produces a minimal implementation of .Fx (called .Nm NanoBSD ) , -which typically fits on a small media such as a Compact Flash card, +which typically fits on a small media such as an SD card, or other mass storage medium. It can be used to build specialized install images, designed for easy installation and maintenance. @@ -77,6 +77,10 @@ This suppresses the normal cleanup work done before the .Cm buildworld stage and adds -DNO_CLEAN to the make command line used for each build stage (world and kernel). +.It Fl p +Don't prepare the image. +Skip running of the customization and early customization scripts for +incremental image refinement from world, kernel, or packages. .It Fl q Make output more quiet. .It Fl v diff --git a/share/man/man8/rc.subr.8 b/share/man/man8/rc.subr.8 index 1fd5041cecd8..45a9e9a684cd 100644 --- a/share/man/man8/rc.subr.8 +++ b/share/man/man8/rc.subr.8 @@ -1010,7 +1010,7 @@ However, if fails, just return. .Pp .Ic DebugOn -will be called with tags derrived from +will be called with tags derived from .Va name and .Va rc_arg diff --git a/share/man/man9/BUF_ISLOCKED.9 b/share/man/man9/BUF_ISLOCKED.9 index 09dfc458c834..c50d79c889fd 100644 --- a/share/man/man9/BUF_ISLOCKED.9 +++ b/share/man/man9/BUF_ISLOCKED.9 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH .\" DAMAGE. .\" -.Dd January 22, 2008 +.Dd September 26, 2025 .Dt BUF_ISLOCKED 9 .Os .Sh NAME @@ -60,8 +60,7 @@ The lock is not held by anyone. .Xr buf 9 , .Xr BUF_LOCK 9 , .Xr BUF_UNLOCK 9 , -.Xr lockmgr 9 , -.Xr lockstatus 9 +.Xr lockmgr 9 .Sh AUTHORS This manual page was written by .An Attilio Rao Aq Mt attilio@FreeBSD.org . diff --git a/share/man/man9/DEVICE_DETACH.9 b/share/man/man9/DEVICE_DETACH.9 index 5f1bf7a3295f..856c6138ed4c 100644 --- a/share/man/man9/DEVICE_DETACH.9 +++ b/share/man/man9/DEVICE_DETACH.9 @@ -41,9 +41,7 @@ Detach a device. This can be called if the user is replacing the driver software or if a device is about to be physically removed from -the system (e.g.\& for -.Xr pccard 4 -devices). +the system. .Pp The method should deallocate any system resources allocated during the .Xr DEVICE_ATTACH 9 @@ -52,7 +50,6 @@ etc.) .Sh RETURN VALUES Zero is returned on success, otherwise an appropriate error is returned. .Sh SEE ALSO -.Xr pccard 4 , .Xr device 9 , .Xr DEVICE_ATTACH 9 , .Xr DEVICE_IDENTIFY 9 , diff --git a/share/man/man9/MODULE_PNP_INFO.9 b/share/man/man9/MODULE_PNP_INFO.9 index 529afd70096d..b1cc935b1aca 100644 --- a/share/man/man9/MODULE_PNP_INFO.9 +++ b/share/man/man9/MODULE_PNP_INFO.9 @@ -65,7 +65,7 @@ The second name is encoded by appending a forward slash and the second name after the first.) .Pp Types are one of the following: -.Bl -tag -width U16 +.Bl -tag -width indent .It Dq Vt U8 .Vt uint8_t element. diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile index 5bcde3030ebc..ac5224b76444 100644 --- a/share/man/man9/Makefile +++ b/share/man/man9/Makefile @@ -1,6 +1,6 @@ .include <src.opts.mk> -PACKAGE= kernel +MANPACKAGE= kernel-man MAN= accept_filter.9 \ accf_data.9 \ @@ -90,6 +90,7 @@ MAN= accept_filter.9 \ DECLARE_MODULE.9 \ DEFINE_IFUNC.9 \ DELAY.9 \ + deadfs.9 \ devclass.9 \ devclass_find.9 \ devclass_get_device.9 \ @@ -149,6 +150,7 @@ MAN= accept_filter.9 \ EVENTHANDLER.9 \ eventtimers.9 \ extattr.9 \ + exterror.9 \ fail.9 \ fdt_pinctrl.9 \ fetch.9 \ @@ -417,7 +419,7 @@ MAN= accept_filter.9 \ vn_deallocate.9 \ vn_fullpath.9 \ vn_isdisk.9 \ - vnet.9 \ + VNET.9 \ vnode.9 \ vnode_pager_setsize.9 \ vnode_pager_purge_range.9 \ @@ -1038,6 +1040,7 @@ MLINKS+=devfs_set_cdevpriv.9 devfs_clear_cdevpriv.9 \ MLINKS+=device_add_child.9 device_add_child_ordered.9 MLINKS+=device_enable.9 device_disable.9 \ device_enable.9 device_is_enabled.9 +MLINKS+=device_get_children.9 device_has_children.9 MLINKS+=device_get_ivars.9 device_set_ivars.9 MLINKS+=device_get_name.9 device_get_nameunit.9 MLINKS+=device_get_state.9 device_busy.9 \ @@ -2207,6 +2210,7 @@ MLINKS+=syscall_helper_register.9 syscall_helper_unregister.9 \ syscall_helper_register.9 SYSCALL_INIT_HELPER_COMPAT_F.9 \ syscall_helper_register.9 SYSCALL_INIT_HELPER_F.9 MLINKS+=sysctl.9 SYSCTL_DECL.9 \ + sysctl.9 SYSCTL_ADD_BOOL.9 \ sysctl.9 SYSCTL_ADD_CONST_STRING.9 \ sysctl.9 SYSCTL_ADD_INT.9 \ sysctl.9 SYSCTL_ADD_LONG.9 \ @@ -2233,6 +2237,7 @@ MLINKS+=sysctl.9 SYSCTL_DECL.9 \ sysctl.9 SYSCTL_ADD_UMA_CUR.9 \ sysctl.9 SYSCTL_ADD_UMA_MAX.9 \ sysctl.9 SYSCTL_ADD_UQUAD.9 \ + sysctl.9 SYSCTL_BOOL.9 \ sysctl.9 SYSCTL_CHILDREN.9 \ sysctl.9 SYSCTL_STATIC_CHILDREN.9 \ sysctl.9 SYSCTL_NODE_CHILDREN.9 \ @@ -2455,6 +2460,9 @@ MLINKS+=vm_page_insert.9 vm_page_remove.9 MLINKS+=vm_page_wire.9 vm_page_unwire.9 \ vm_page_wire.9 vm_page_unwire_noq.9 \ vm_page_wire.9 vm_page_wire_mapped.9 +MLINKS+=vn_fullpath.9 vn_fullpath_jail.9 \ + vn_fullpath.9 vn_fullpath_global.9 \ + vn_fullpath.9 vn_fullpath_hardlink.9 MLINKS+=VOP_ACCESS.9 VOP_ACCESSX.9 MLINKS+=VOP_ATTRIB.9 VOP_GETATTR.9 \ VOP_ATTRIB.9 VOP_SETATTR.9 \ @@ -2474,9 +2482,8 @@ MLINKS+=VOP_OPENCLOSE.9 VOP_CLOSE.9 \ MLINKS+=VOP_RDWR.9 VOP_READ.9 \ VOP_RDWR.9 VOP_WRITE.9 MLINKS+=VOP_REMOVE.9 VOP_RMDIR.9 -MLINKS+=vnet.9 vimage.9 -MLINKS+=vref.9 VREF.9 \ - vref.9 vrefl.9 +MLINKS+=VNET.9 VIMAGE.9 +MLINKS+=vref.9 vrefl.9 MLINKS+=vrele.9 vput.9 \ vrele.9 vunref.9 MLINKS+=vslock.9 vsunlock.9 diff --git a/share/man/man9/PCI_IOV_ADD_VF.9 b/share/man/man9/PCI_IOV_ADD_VF.9 index 512b0b8668cc..95bf5a218e8e 100644 --- a/share/man/man9/PCI_IOV_ADD_VF.9 +++ b/share/man/man9/PCI_IOV_ADD_VF.9 @@ -41,7 +41,7 @@ The .Fn PCI_IOV_ADD_VF method is called by the PCI Single-Root I/O Virtualization .Pq SR-IOV -infrastructure when it is initializating a new Virtual Function (VF) as a child +infrastructure when it is initializing a new Virtual Function (VF) as a child of the given Physical Function (PF) device. This method will not be called until a successful call to .Xr PCI_IOV_INIT 9 diff --git a/share/man/man9/VFS.9 b/share/man/man9/VFS.9 index a269d8d070cf..6ea6570bbf6e 100644 --- a/share/man/man9/VFS.9 +++ b/share/man/man9/VFS.9 @@ -26,7 +26,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd February 9, 2010 +.Dd November 3, 2025 .Dt VFS 9 .Os .Sh NAME @@ -42,9 +42,9 @@ function from rather than implementing empty functions or casting to .Fa eopnotsupp . .Sh SEE ALSO +.Xr dtrace_vfs 4 , .Xr VFS_CHECKEXP 9 , .Xr VFS_FHTOVP 9 , -.Xr VFS_INIT 9 , .Xr VFS_MOUNT 9 , .Xr VFS_QUOTACTL 9 , .Xr VFS_SET 9 , diff --git a/share/man/man9/vnet.9 b/share/man/man9/VNET.9 index 28e28bfd3242..679ccc3f9a06 100644 --- a/share/man/man9/vnet.9 +++ b/share/man/man9/VNET.9 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd December 10, 2020 +.Dd September 19, 2025 .Dt VNET 9 .Os .Sh NAME @@ -162,26 +162,6 @@ .Fa "int priority" .Fc .\" ------------------------------------------------------------ -.Ss "Sysctl Handling" -.Fo SYSCTL_VNET_INT -.Fa parent nbr name access ptr val descr -.Fc -.Fo SYSCTL_VNET_PROC -.Fa parent nbr name access ptr arg handler fmt descr -.Fc -.Fo SYSCTL_VNET_STRING -.Fa parent nbr name access arg len descr -.Fc -.Fo SYSCTL_VNET_STRUCT -.Fa parent nbr name access ptr type descr -.Fc -.Fo SYSCTL_VNET_UINT -.Fa parent nbr name access ptr val descr -.Fc -.Fo VNET_SYSCTL_ARG -.Fa req arg1 -.Fc -.\" ------------------------------------------------------------ .Sh DESCRIPTION .Nm is the name of a technique to virtualize the network stack. @@ -250,9 +230,6 @@ The .Fn VNET_NAME macro returns the offset within the memory region of the virtual network stack instance. -It is usually only used with -.Fn SYSCTL_VNET_* -macros. .\" ------------------------------------------------------------ .Ss "Virtual Instance Selection" .\" @@ -459,30 +436,9 @@ call will be ignored. .\" A .Xr sysctl 9 -can be virtualized by using one of the -.Fn SYSCTL_VNET_* -macros. -.Pp -They take the same arguments as the standard -.Xr sysctl 9 -functions, with the only difference, that the -.Fa ptr -argument has to be passed as -.Ql &VNET_NAME(foo) -instead of -.Ql &foo -so that the variable can be selected from the correct memory -region of the virtual network stack instance of the caller. -.Pp -For the very rare case a sysctl handler function would want to -handle -.Fa arg1 -itself the -.Fn VNET_SYSCTL_ARG req arg1 -is provided that will translate the -.Fa arg1 -argument to the correct memory address in the virtual network stack -context of the caller. +can be virtualized by adding the +.Dv CTLFLAG_VNET +control flag to the ctlflags bitmask of the macros. .\" ------------------------------------------------------------ .Sh SEE ALSO .Xr jail 2 , diff --git a/share/man/man9/VOP_OPENCLOSE.9 b/share/man/man9/VOP_OPENCLOSE.9 index 9a4f7069962d..672f9faa92f5 100644 --- a/share/man/man9/VOP_OPENCLOSE.9 +++ b/share/man/man9/VOP_OPENCLOSE.9 @@ -26,7 +26,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd December 2, 2009 +.Dd October 17, 2025 .Dt VOP_OPEN 9 .Os .Sh NAME @@ -78,6 +78,17 @@ The access mode is a set of flags, including .Dv FWRITE , .Dv O_NONBLOCK , .Dv O_APPEND . +.Pp +The thread +.Fa td +passed to +.Fn VOP_CLOSE +may be +.Ql NULL +if the last reference to the open file is released from a kernel context, e.g., +the destruction of a socket buffer containing the file reference in a +.Dv SCM_RIGHTS +message. .Sh LOCKS .Fn VOP_OPEN expects diff --git a/share/man/man9/atomic.9 b/share/man/man9/atomic.9 index df24cd4a4d2b..b027a0ff0bca 100644 --- a/share/man/man9/atomic.9 +++ b/share/man/man9/atomic.9 @@ -182,35 +182,42 @@ This variant is the default. The second variant has acquire semantics, and the third variant has release semantics. .Pp -When an atomic operation has acquire semantics, the operation must have +An atomic operation can only have +.Em acquire +semantics if it performs a load +from memory. +When an atomic operation has acquire semantics, a load performed as +part of the operation must have completed before any subsequent load or store (by program order) is performed. Conversely, acquire semantics do not require that prior loads or stores have -completed before the atomic operation is performed. -An atomic operation can only have acquire semantics if it performs a load -from memory. +completed before a load from the atomic operation is performed. To denote acquire semantics, the suffix .Dq Li _acq is inserted into the function name immediately prior to the .Dq Li _ Ns Aq Fa type suffix. -For example, to subtract two integers ensuring that the subtraction is +For example, to subtract two integers ensuring that the load of +the value from memory is completed before any subsequent loads and stores are performed, use .Fn atomic_subtract_acq_int . .Pp +An atomic operation can only have +.Em release +semantics if it performs a store to memory. When an atomic operation has release semantics, all prior loads or stores -(by program order) must have completed before the operation is performed. -Conversely, release semantics do not require that the atomic operation must +(by program order) must have completed before a store executed as part of +the operation that is performed. +Conversely, release semantics do not require that a store from the atomic +operation must have completed before any subsequent load or store is performed. -An atomic operation can only have release semantics if it performs a store -to memory. To denote release semantics, the suffix .Dq Li _rel is inserted into the function name immediately prior to the .Dq Li _ Ns Aq Fa type suffix. For example, to add two long integers ensuring that all prior loads and -stores are completed before the addition is performed, use +stores are completed before the store of the result is performed, use .Fn atomic_add_rel_long . .Pp When a release operation by one thread @@ -235,6 +242,33 @@ section. However, they will not prevent the compiler or processor from moving loads or stores into the critical section, which does not violate the semantics of a mutex. +.Ss Architecture-dependent caveats for compare-and-swap +The +.Fn atomic_[f]cmpset_<type> +operations, specifically those without explicitly specified memory +ordering, are defined as relaxed. +Consequently, a thread's accesses to memory locations different from +that of the atomic operation can be reordered in relation to the +atomic operation. +.Pp +However, the implementation on the +.Sy amd64 +and +.Sy i386 +architectures provide sequentially consistent semantics. +In particular, the reordering mentioned above cannot occur. +.Pp +On the +.Sy arm64/aarch64 +architecture, the operation may include either acquire +semantics on the constituent load or release semantics +on the constituent store. +This means that accesses to other locations in program order +before the atomic, might be observed as executed after the load +that is the part of the atomic operation (but not after the store +from the operation due to release). +Similarly, accesses after the atomic might be observed as executed +before the store. .Ss Thread Fence Operations Alternatively, a programmer can use atomic thread fence operations to constrain the reordering of accesses. @@ -272,7 +306,7 @@ In C11, a release fence by one thread synchronizes with an acquire fence by another thread when an atomic load that is prior to the acquire fence (by program order) reads the value written by an atomic store that is subsequent to the release fence. -In constrast, in +In contrast, in .Fx , because of the atomicity of ordinary, naturally aligned loads and stores, fences can also be synchronized by ordinary loads diff --git a/share/man/man9/backlight.9 b/share/man/man9/backlight.9 index 926a723b3859..c4c338ce56ca 100644 --- a/share/man/man9/backlight.9 +++ b/share/man/man9/backlight.9 @@ -65,6 +65,8 @@ struct. .Bl -tag -width "/dev/backlight/*" .It Pa /dev/backlight/* .El +.Sh SEE ALSO +.Xr backlight 8 .Sh HISTORY The .Nm backlight diff --git a/share/man/man9/bhnd.9 b/share/man/man9/bhnd.9 index 722ae6b6a393..ed3007ea748d 100644 --- a/share/man/man9/bhnd.9 +++ b/share/man/man9/bhnd.9 @@ -2350,7 +2350,7 @@ function retains and returns a reference to the provider registered for .Fa service with the parent .Xr bhnd 4 -bus of devce +bus of device .Fa dev , if available. On success, the caller is responsible for releasing this provider reference diff --git a/share/man/man9/buf.9 b/share/man/man9/buf.9 index ecd4a1487735..ff9a1d0d46e0 100644 --- a/share/man/man9/buf.9 +++ b/share/man/man9/buf.9 @@ -36,44 +36,70 @@ The kernel implements a KVM abstraction of the buffer cache which allows it to map potentially disparate vm_page's into contiguous KVM for use by (mainly file system) devices and device I/O. This abstraction supports -block sizes from DEV_BSIZE (usually 512) to upwards of several pages or more. +block sizes from +.Dv DEV_BSIZE +(usually 512) to upwards of several pages or more. It also supports a relatively primitive byte-granular valid range and dirty range currently hardcoded for use by NFS. The code implementing the VM Buffer abstraction is mostly concentrated in -.Pa /usr/src/sys/kern/vfs_bio.c . +.Pa sys/kern/vfs_bio.c +in the +.Fx +source tree. .Pp One of the most important things to remember when dealing with buffer pointers -(struct buf) is that the underlying pages are mapped directly from the buffer +.Pq Vt struct buf +is that the underlying pages are mapped directly from the buffer cache. No data copying occurs in the scheme proper, though some file systems such as UFS do have to copy a little when dealing with file fragments. The second most important thing to remember is that due to the underlying page -mapping, the b_data base pointer in a buf is always *page* aligned, not -*block* aligned. -When you have a VM buffer representing some b_offset and -b_size, the actual start of the buffer is (b_data + (b_offset & PAGE_MASK)) -and not just b_data. +mapping, the +.Va b_data +base pointer in a buf is always +.Em page Ns -aligned , +not +.Em block Ns -aligned . +When you have a VM buffer representing some +.Va b_offset +and +.Va b_size , +the actual start of the buffer is +.Ql b_data + (b_offset & PAGE_MASK) +and not just +.Ql b_data . Finally, the VM system's core buffer cache supports -valid and dirty bits (m->valid, m->dirty) for pages in DEV_BSIZE chunks. +valid and dirty bits +.Pq Va m->valid , m->dirty +for pages in +.Dv DEV_BSIZE +chunks. Thus a platform with a hardware page size of 4096 bytes has 8 valid and 8 dirty bits. These bits are generally set and cleared in groups based on the device block size of the device backing the page. Complete page's worth are often -referred to using the VM_PAGE_BITS_ALL bitmask (i.e., 0xFF if the hardware page +referred to using the +.Dv VM_PAGE_BITS_ALL +bitmask (i.e., 0xFF if the hardware page size is 4096). .Pp VM buffers also keep track of a byte-granular dirty range and valid range. This feature is normally only used by the NFS subsystem. I am not sure why it -is used at all, actually, since we have DEV_BSIZE valid/dirty granularity +is used at all, actually, since we have +.Dv DEV_BSIZE +valid/dirty granularity within the VM buffer. -If a buffer dirty operation creates a 'hole', +If a buffer dirty operation creates a +.Dq hole , the dirty range will extend to cover the hole. If a buffer validation -operation creates a 'hole' the byte-granular valid range is left alone and +operation creates a +.Dq hole +the byte-granular valid range is left alone and will not take into account the new extension. Thus the whole byte-granular abstraction is considered a bad hack and it would be nice if we could get rid @@ -81,16 +107,24 @@ of it completely. .Pp A VM buffer is capable of mapping the underlying VM cache pages into KVM in order to allow the kernel to directly manipulate the data associated with -the (vnode,b_offset,b_size). +the +.Pq Va vnode , b_offset , b_size . The kernel typically unmaps VM buffers the moment -they are no longer needed but often keeps the 'struct buf' structure -instantiated and even bp->b_pages array instantiated despite having unmapped +they are no longer needed but often keeps the +.Vt struct buf +structure +instantiated and even +.Va bp->b_pages +array instantiated despite having unmapped them from KVM. If a page making up a VM buffer is about to undergo I/O, the -system typically unmaps it from KVM and replaces the page in the b_pages[] +system typically unmaps it from KVM and replaces the page in the +.Va b_pages[] array with a place-marker called bogus_page. The place-marker forces any kernel -subsystems referencing the associated struct buf to re-lookup the associated +subsystems referencing the associated +.Vt struct buf +to re-lookup the associated page. I believe the place-marker hack is used to allow sophisticated devices such as file system devices to remap underlying pages in order to deal with, @@ -107,18 +141,29 @@ you wind up with pages marked clean that are actually still dirty. If not treated carefully, these pages could be thrown away! Indeed, a number of -serious bugs related to this hack were not fixed until the 2.2.8/3.0 release. -The kernel uses an instantiated VM buffer (i.e., struct buf) to place-mark pages +serious bugs related to this hack were not fixed until the +.Fx 2.2.8 / +.Fx 3.0 +release. +The kernel uses an instantiated VM buffer (i.e., +.Vt struct buf ) +to place-mark pages in this special state. -The buffer is typically flagged B_DELWRI. +The buffer is typically flagged +.Dv B_DELWRI . When a -device no longer needs a buffer it typically flags it as B_RELBUF. +device no longer needs a buffer it typically flags it as +.Dv B_RELBUF . Due to -the underlying pages being marked clean, the B_DELWRI|B_RELBUF combination must +the underlying pages being marked clean, the +.Ql B_DELWRI|B_RELBUF +combination must be interpreted to mean that the buffer is still actually dirty and must be written to its backing store before it can actually be released. In the case -where B_DELWRI is not set, the underlying dirty pages are still properly +where +.Dv B_DELWRI +is not set, the underlying dirty pages are still properly marked as dirty and the buffer can be completely freed without losing that clean/dirty state information. (XXX do we have to check other flags in @@ -128,7 +173,9 @@ The kernel reserves a portion of its KVM space to hold VM Buffer's data maps. Even though this is virtual space (since the buffers are mapped from the buffer cache), we cannot make it arbitrarily large because -instantiated VM Buffers (struct buf's) prevent their underlying pages in the +instantiated VM Buffers +.Pq Vt struct buf Ap s +prevent their underlying pages in the buffer cache from being freed. This can complicate the life of the paging system. diff --git a/share/man/man9/bus_alloc_resource.9 b/share/man/man9/bus_alloc_resource.9 index 84a4c9c530c9..210abb3074e1 100644 --- a/share/man/man9/bus_alloc_resource.9 +++ b/share/man/man9/bus_alloc_resource.9 @@ -26,7 +26,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd May 20, 2016 +.Dd October 30, 2025 .Dt BUS_ALLOC_RESOURCE 9 .Os .Sh NAME @@ -43,14 +43,14 @@ .In machine/resource.h .Ft struct resource * .Fo bus_alloc_resource -.Fa "device_t dev" "int type" "int *rid" "rman_res_t start" "rman_res_t end" +.Fa "device_t dev" "int type" "int rid" "rman_res_t start" "rman_res_t end" .Fa "rman_res_t count" "u_int flags" .Fc .Ft struct resource * -.Fn bus_alloc_resource_any "device_t dev" "int type" "int *rid" "u_int flags" +.Fn bus_alloc_resource_any "device_t dev" "int type" "int rid" "u_int flags" .Ft struct resource * .Fo bus_alloc_resource_anywhere -.Fa "device_t dev" "int type" "int *rid" "rman_res_t count" "u_int flags" +.Fa "device_t dev" "int type" "int rid" "rman_res_t count" "u_int flags" .Fc .Sh DESCRIPTION This is an easy interface to the resource-management functions. @@ -106,15 +106,13 @@ for I/O memory .El .It .Fa rid -points to a bus specific handle that identifies the resource being allocated. +is a bus specific handle that identifies the resource being allocated. For ISA this is an index into an array of resources that have been setup for this device by either the PnP mechanism, or via the hints mechanism. For PCCARD, this is an index into the array of resources described by the PC Card's CIS entry. For PCI, the offset into PCI config space which has the BAR to use to access the resource. -The bus methods are free to change the RIDs that they are given as a parameter. -You must not depend on the value you gave it earlier. .It .Fa start and @@ -159,11 +157,6 @@ resource permits contemporaneous sharing. It should always be set unless you know that the resource cannot be shared. It is the bus driver's task to filter out the flag if the bus does not support sharing. -For example, -.Xr pccard 4 -cannot share IRQs while -.Xr cardbus 4 -can. .It Dv RF_UNMAPPED do not establish implicit mapping when activated via .Xr bus_activate_resource 9 . @@ -175,20 +168,12 @@ A pointer to is returned on success, a null pointer otherwise. .Sh EXAMPLES This is some example code that allocates a 32 byte I/O port range and an IRQ. -The values of -.Va portid -and -.Va irqid -should be saved in the softc of the device after these calls. .Bd -literal struct resource *portres, *irqres; - int portid, irqid; - portid = 0; - irqid = 0; - portres = bus_alloc_resource(dev, SYS_RES_IOPORT, &portid, + portres = bus_alloc_resource(dev, SYS_RES_IOPORT, 0, 0ul, ~0ul, 32, RF_ACTIVE); - irqres = bus_alloc_resource_any(dev, SYS_RES_IRQ, &irqid, + irqres = bus_alloc_resource_any(dev, SYS_RES_IRQ, 0, RF_ACTIVE | RF_SHAREABLE); .Ed .Sh SEE ALSO diff --git a/share/man/man9/bus_attach_children.9 b/share/man/man9/bus_attach_children.9 index 5e3ca4c5e906..81a24a428d8e 100644 --- a/share/man/man9/bus_attach_children.9 +++ b/share/man/man9/bus_attach_children.9 @@ -105,7 +105,7 @@ Detached devices are not deleted. .Pp .Fn bus_detach_children is typically called at the start of a bus driver's -.Xr DEVICE_ATTACH 9 +.Xr DEVICE_DETACH 9 method to give child devices a chance to veto the detach request. It is usually paired with a later call to .Fn device_delete_children 9 diff --git a/share/man/man9/bus_dma.9 b/share/man/man9/bus_dma.9 index b644eeb2a476..0bf27eb5eb22 100644 --- a/share/man/man9/bus_dma.9 +++ b/share/man/man9/bus_dma.9 @@ -197,7 +197,7 @@ in addition to restrictions that differ between unrelated groups of transactions, the driver can first create a .Dq parent -tag that decribes the common restrictions. +tag that describes the common restrictions. The per-group tags can then inherit these restrictions from this .Dq parent tag rather than having to list them explicitly when creating the per-group tags. @@ -733,7 +733,7 @@ Fills in the selected fields of the template with a variable number of key-value parameters. The macros listed below take an argument of the specified type and encapsulate it into a key-value structure that is directly usable as a parameter argument. -Muliple parameters may be provided at once. +Multiple parameters may be provided at once. .Bd -literal BD_PARENT() void * BD_ALIGNMENT() uintmax_t diff --git a/share/man/man9/callout.9 b/share/man/man9/callout.9 index 0e59ef8ab2b1..637049ec1ef5 100644 --- a/share/man/man9/callout.9 +++ b/share/man/man9/callout.9 @@ -27,7 +27,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.Dd January 22, 2024 +.Dd November 4, 2025 .Dt CALLOUT 9 .Os .Sh NAME @@ -789,6 +789,8 @@ and functions return a value of one if the callout was still pending when it was called, a zero if the callout could not be stopped and a negative one is it was either not running or has already completed. +.Sh SEE ALSO +.Xr dtrace_callout_execute 4 .Sh HISTORY .Fx initially used the long standing diff --git a/share/man/man9/copy.9 b/share/man/man9/copy.9 index 8b2d0dc67727..3a3105ddf644 100644 --- a/share/man/man9/copy.9 +++ b/share/man/man9/copy.9 @@ -43,7 +43,7 @@ .Nm copyout_nofault , .Nm copystr , .Nm copyinstr -.Nd heterogenous address space copy functions +.Nd heterogeneous address space copy functions .Sh SYNOPSIS .In sys/types.h .In sys/systm.h diff --git a/share/man/man9/crypto_request.9 b/share/man/man9/crypto_request.9 index af62b9089561..77e6a60b46de 100644 --- a/share/man/man9/crypto_request.9 +++ b/share/man/man9/crypto_request.9 @@ -383,7 +383,7 @@ depending on whether the driver is implemented by software or hardware. dispatches the request asynchronously. If the driver is inherently synchronous, the request is queued to a taskqueue backed by a pool of worker threads. -This can increase througput by allowing requests from a single producer to be +This can increase throughput by allowing requests from a single producer to be processed in parallel. By default the pool is sized to provide one thread for each CPU. Worker threads dequeue requests and pass them to the driver asynchronously. diff --git a/share/man/man9/deadfs.9 b/share/man/man9/deadfs.9 new file mode 100644 index 000000000000..5f4d037a0f09 --- /dev/null +++ b/share/man/man9/deadfs.9 @@ -0,0 +1,36 @@ +.\" +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.\" Copyright (c) 2025 Mateusz Piotrowski <0mp@FreeBSD.org> +.\" +.Dd October 24, 2025 +.Dt DEADFS 9 +.Os +.Sh NAME +.Nm deadfs +.Nd pseudo-filesystem to own reclaimed vnodes +.Sh DESCRIPTION +The +.Nm +file system implements operations that do not modify any data +and instead return indications of invalid IO. +Its role is to provide a fallback vnode operations vector for reclaimed +.Xr vnode 9 Ap s . +.Pp +It is a kernel-only pseudo-file system and so cannot be mounted from userspace. +.Sh SEE ALSO +.Xr insmntque 9 , +.Xr vnode 9 , +.Xr VOP_RECLAIM 9 +.Sh HISTORY +UNIX System Manager's Manual (SMM) for +.Bx 4.4 +described +.Nm +as a file system +.Dq where rejected vnodes go to die . +.Sh AUTHORS +The +.Nm +manual page was written by +.An Mateusz Piotrowski Aq Mt 0mp@FreeBSD.org . diff --git a/share/man/man9/device_get_children.9 b/share/man/man9/device_get_children.9 index f9c36971e9b5..45f8f468531b 100644 --- a/share/man/man9/device_get_children.9 +++ b/share/man/man9/device_get_children.9 @@ -1,6 +1,7 @@ .\" -*- nroff -*- .\" .\" Copyright (c) 1998 Doug Rabson +.\" Copyright (c) 2025 Dag-Erling Smørgrav <des@FreeBSD.org> .\" .\" All rights reserved. .\" @@ -26,21 +27,27 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd August 23, 2008 +.Dd November 28, 2025 .Dt DEVICE_GET_CHILDREN 9 .Os .Sh NAME -.Nm device_get_children -.Nd get a list of devices connected to a device +.Nm device_get_children , +.Nm device_has_children +.Nd examine devices connected to a device .Sh SYNOPSIS .In sys/param.h .In sys/bus.h .Ft int .Fn device_get_children "device_t dev" "device_t **devlistp" "int *devcountp" +.Ft bool +.Fn device_has_children "device_t dev" .Sh DESCRIPTION -Retrieve a list of all device instances currently connected to -.Pa dev -and return the list in +The +.Nm device_get_children +function retrieves a list of all device instances currently connected +to +.Fa dev . +It returns the list in .Fa *devlistp and the count in .Fa *devcountp . @@ -50,11 +57,35 @@ The memory allocated for the list should be freed using and .Fa devcountp are not changed when an error is returned. +.Pp +As a special case, if +.Fa devlistp +is null, no memory is allocated but the count is still returned in +.Fa *devcountp . +.Pp +The +.Nm device_has_children +function returns +.Dv true +if +.Fa dev +has at least one child and +.Dv false +if it has none. .Sh RETURN VALUES -Zero is returned on success, otherwise an appropriate error is returned. +The +.Nm device_get_children +function returns zero on success and an appropriate error otherwise. +The +.Nm device_has_children +function returns true if the specified device has at least one child +and false otherwise. .Sh SEE ALSO .Xr devclass 9 , .Xr device 9 .Sh AUTHORS +.An -nosplit This manual page was written by -.An Doug Rabson . +.An Doug Rabson Aq Mt dfr@FreeBSD.org +and +.An Dag-Erling Sm\(/orgrav Aq Mt des@FreeBSD.org . diff --git a/share/man/man9/domain.9 b/share/man/man9/domain.9 index dab8cff89e12..d7e743eaf247 100644 --- a/share/man/man9/domain.9 +++ b/share/man/man9/domain.9 @@ -173,7 +173,7 @@ Once a domain is added it cannot be completely unloaded. This is because there is no reference counting system in place to determine if there are any active references from sockets within that domain. -However, the exprimental +However, the experimental .Fn domain_remove exists, and unloadable domains may be supported in the future. .Pp diff --git a/share/man/man9/efirt.9 b/share/man/man9/efirt.9 index c31f52bf2245..e085916801d5 100644 --- a/share/man/man9/efirt.9 +++ b/share/man/man9/efirt.9 @@ -183,7 +183,7 @@ is NULL. .It Dv EIO The variable could not be retrieved due to a hardware error. .It Dv EDOOFUS -The variable could not be retireved due to an authentication failure. +The variable could not be retrieved due to an authentication failure. .El .Pp The diff --git a/share/man/man9/exterror.9 b/share/man/man9/exterror.9 new file mode 100644 index 000000000000..fd4b732b8213 --- /dev/null +++ b/share/man/man9/exterror.9 @@ -0,0 +1,219 @@ +.\" SPDX-License-Identifier: BSD-2-Clause +.\" +.\" Copyright (c) 2025 The FreeBSD Foundation +.\" +.\" This documentation was written by +.\" Konstantin Belousov <kib@FreeBSD.org> under sponsorship +.\" from the FreeBSD Foundation. +.\" +.Dd November 5, 2025 +.Dt EXTERROR 9 +.Os +.Sh NAME +.Nm exterror +.Nd provide extended error information to userspace +.Sh SYNOPSIS +.Bd -literal -offset left -compact +#define EXTERR_CATEGORY EXTERR_CAT_MYCATEGORY +.Ed +.In sys/exterrvar.h +.Vt struct kexterr; +.Ft void +.Fn exterr_clear "struct kexterr *ke" +.Ft int +.Fn exterr_set_from "const struct kexterr *ke" +.Ft int +.Fn EXTERROR "int error" "const char *msg" ... +.Ft void +.Fn EXTERROR_KE "struct kexterr *ke" "int error" "const char *msg" ... +.Sh DESCRIPTION +The +.Nm +framework allows the kernel to return additional information about an error +along with the standard +.Xr errno 3 +error code, which is terse and often lacking context. +.Pp +The terseness is especially visible with commonly overloaded error codes like +.Er EINVAL +or +.Er EIO , +which occur at many places for a given syscall, or even +outside the context of the current kernel call. +Identifying the specific cause for the returned error using only the +.Va errno +value requires searching for all instances that the error is returned +in the kernel and trying to guess which is the most likely code path +to have returned the error. +.Nm +attaches additional data to the error itself +and records the error category and +the kernel source code file line number. +The intent of +.Nm +is to make it easier for a user to identify the cause of the error. +.Sh USAGE +Before +.Nm +can be used in the given source .c file, the category of extended errors +should be allocated in the +.In sys/exterr_cat.h +file. +The category is the unique integer, that, together with the source +line number, uniquely identifies the extended error occurrence. +Then, the +.Va EXTERR_CATEGORY +symbol should be defined as an alias for the allocated category, as +shown in the summary. +.Pp +A typical code fragment to report an error is just +.D1 return (EINVAL); +An extended error can augment the error code with additional information: +.D1 return (EXTERROR(EINVAL, \[dq]Invalid length\[dq])); +The error data and metadata is saved in the current thread storage. +The metadata includes the category and the source file line number. +.Pp +Arguments to the +.Fn EXTERROR +macro: +.Bl -dash +.It +The first argument to +.Fn EXTERROR +is the errno error code. +.It +The second argument is a constant string with the unbound lifetime, +which should tersely provide enough human-readable details about +the error. +.It +The +.Fn EXTERROR +macro can take two optional 64-bit integer arguments, +whose meaning is specific to the subsystem. +.El +.Pp +The strings passed as the second argument are only retained +in the kernel text if the +.Cd option EXTERR_STRINGS +was enabled in the kernel config. +Otherwise they are stripped at compile time and are not available +to userspace at runtime. +.Pp +The +.Fn EXTERROR +macro can be used in any context where the current thread is defined. +Specifically, +.Fn EXTERROR +cannot be used in interrupt contexts and context switch code. +Additionally, use of +.Fn EXTERROR +in kernel threads is not sensible as there is no userspace to retrieve +the extended error data. +.Pp +The +.Fn EXTERROR_KE +macro is similar to +.Fn EXTERROR , +but it takes an explicit pointer +.Fa kep +to the +.Vt struct kexterr +to fill with the extended error information. +The macro expression value is +.Vt void . +See below for description of the asynchronous i/o error facilities. +.Pp +The +.Fn exterr_clear +function clears the content of the +.Vt struct kexterr +pointed to by the argument +.Fa ke . +.Pp +The +.Fn exterr_set_from +function sets the current thread extended error data from the +.Fa struct kexterr +pointed to by the argument +.Fa ke . +.Sh USERSPACE ACCESS TO EXTENDED ERROR DATA +There is no syscall overhead for using +.Nm +in the non-error case. +When an error occurs that has supplied extended information, +the kernel copies out that information into the userspace +per-thread area that was registered with the kernel, typically on +image activation, or later at thread startup. +The area is controlled by the +.Xr exterrctl 2 +internal syscall, normally done by the userspace C runtime. +.Pp +Userspace programs do not need to access the extended information +area directly. +There is no field that is stable for the specific error condition. +Instead, the base +.Lb c +functions +.Xr err 3 +and +.Xr warn 3 +were modified to print the extended information if it is available +in addition to the usual +.Va errno +decoding. +.Sh ASYNCHRONOUS INPUT/OUTPUT +Due to the nature of the +.Fx +i/o subsystem, most input/output requests, presented as buffers (as in +.Vt struct buf ) +and geom bio's ( +.Vt struct bio ) +are processed asynchronously in filesystem- and geom-private threads. +This makes it challenging to pass any extended error information +from the geom providers and drivers, where an error typically occurs, +back to the thread that initiated the request, and is the consumer of +the result. +.Pp +To alleviate the mismatch, both +.Vt struct buf +and +.Vt struct bio +have member of the +.Vt struct kexterr +type. +For buffers, the +.Va b_exterr +for +.Vt struct buf , +and +.Va bio_exterr +for +.Vt struct bio . +Asynchronous i/o code can use the +.Fn EXTERROR_KE +macro, passing the pointer to the current request's embedded +.Vt struct kexterr , +to record the extended error. +In both cases, the +.Va BIO_EXTERR +flag should be set to indicate that whole extended error is valid, +not only the +.Va b_error +or +.Va bio_error +values. +.Pp +Both VFS and geom generic layers, and several geom providers that generate +subordinate bio's from the original request, are aware of the extended +errors. +They pass +.Vt kexterr +from the failed request back to the thread that create the request. +.Sh SEE ALSO +.Xr errno 3 , +.Xr err 3 +.Sh HISTORY +The +.Nm +facility was introduced in +.Fx 15.0 . diff --git a/share/man/man9/g_bio.9 b/share/man/man9/g_bio.9 index 407c38e6ca70..fc278cd229a9 100644 --- a/share/man/man9/g_bio.9 +++ b/share/man/man9/g_bio.9 @@ -22,7 +22,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd August 7, 2019 +.Dd October 26, 2025 .Dt G_BIO 9 .Os .Sh NAME @@ -309,6 +309,7 @@ example_start(struct bio *bp) } .Ed .Sh SEE ALSO +.Xr dtrace_io 4 , .Xr geom 4 , .Xr DECLARE_GEOM_CLASS 9 , .Xr g_access 9 , diff --git a/share/man/man9/g_geom.9 b/share/man/man9/g_geom.9 index 74c6979fceda..99d0ba074e89 100644 --- a/share/man/man9/g_geom.9 +++ b/share/man/man9/g_geom.9 @@ -27,12 +27,15 @@ .Os .Sh NAME .Nm g_new_geomf , +.Nm g_new_geom , .Nm g_destroy_geom .Nd "geom management" .Sh SYNOPSIS .In geom/geom.h .Ft "struct g_geom *" .Fn g_new_geomf "struct g_class *mp" "const char *fmt" ... +.Ft "struct g_geom *" +.Fn g_new_geom "struct g_class *mp" "const char *name" .Ft void .Fn g_destroy_geom "struct g_geom *gp" .Sh DESCRIPTION @@ -58,6 +61,14 @@ The geom's name is created in a -like way from the rest of the arguments. .Pp The +.Fn g_new_geom +function is very similar to +.Fn g_new_geomf +except that it accepts a regular string instead of a +.Xr printf 3 Ns +-like format string as the geom's name. +.Pp +The .Fn g_destroy_geom function destroys the given geom immediately and cancels all related pending events. @@ -94,7 +105,9 @@ and .Va access for it. .Pp -.Fn g_new_geomf : +.Fn g_new_geomf +and +.Fn g_new_geom : .Bl -item -offset indent .It Class diff --git a/share/man/man9/gone_in.9 b/share/man/man9/gone_in.9 index 7521adfda204..1b60e1eb10c2 100644 --- a/share/man/man9/gone_in.9 +++ b/share/man/man9/gone_in.9 @@ -1,6 +1,6 @@ .\" Copyright (c) 2021 The FreeBSD Foundation .\" -.\" This document was written by Ed Maste under sponsorhip from +.\" This document was written by Ed Maste under sponsorship from .\" The FreeBSD Foundation. .\" .\" Redistribution and use in source and binary forms, with or without @@ -23,7 +23,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd August 16, 2021 +.Dd June 24, 2025 .Dt GONE_IN 9 .Os .Sh NAME @@ -33,14 +33,15 @@ .Sh SYNOPSIS .In sys/systm.h .Ft void -.Fn gone_in "int major" "const char *msg" +.Fn gone_in "int major" "const char *msg" "..." .Ft void -.Fn gone_in_dev "device_t dev" "int major" "const char *msg" +.Fn gone_in_dev "device_t dev" "int major" "const char *msg" "..." .Sh DESCRIPTION The -.Fn gone_in -functions are used to provide a notice that the kernel is using a driver or -some other functionality that is deprecated, and will be removed in a future +.Nm gone_in +functions are used to provide a notice that the kernel is actively using a +driver or some other functionality that is deprecated, and is planned for +removal in a future .Fx release. The notice is sent to the kernel @@ -51,30 +52,29 @@ The argument specifies the major version of the .Fx release that will remove the deprecated functionality. +The notice shall be printed only once, thus +.Nm +functions are safe to use in often executed code paths. +.Pp +.Nm gone_in_dev +will prepend driver name before the notice. .Pp In releases before .Fa major -the deprecation notice states -.Do -Deprecated code (to be removed in FreeBSD -.Fa major Ns ): -.Fa msg -.Dc . -In releases equal to and after -.Fa major -the notice states +the provided notice will be appended with .Do -Obsolete code will be removed soon: -.Fa msg +To be removed in FreeBSD +.Fa major Ns .Dc . .Sh EXAMPLES .Bd -literal -offset indent void -sample_init(void) +example_api(foo_t *args) { - /* Initializaiton code omitted. */ + gone_in(16, "Warning! %s[%u] uses obsolete API. ", + curthread->td_proc->p_comm, curthread->td_proc->p_pid); - gone_in(14, "Giant-locked filesystem"); + /* API implementation omitted. */ } int @@ -82,7 +82,7 @@ example_driver_attach(struct example_driver_softc *sc) { /* Attach code omitted. */ - gone_in_dev(sc->dev, 14, "Giant-locked driver"); + gone_in_dev(sc->dev, 16, "driver is deprecated"); } .Ed .Sh HISTORY diff --git a/share/man/man9/ifnet.9 b/share/man/man9/ifnet.9 index 3c45e4f29e2d..e81c2990c13c 100644 --- a/share/man/man9/ifnet.9 +++ b/share/man/man9/ifnet.9 @@ -482,7 +482,7 @@ This is initialized by driver at attach. .It Fn if_getaddrlen .It Fn if_gethwaddr .It Fn if_getbroadcastaddr Fn if_setbroadcastaddr -Access the interface broadcast addess. +Access the interface broadcast address. .It Fn if_setmtu .It Fn if_getmtu Access the interface MTU. diff --git a/share/man/man9/insmntque.9 b/share/man/man9/insmntque.9 index 869d8767632b..33ba697b10b9 100644 --- a/share/man/man9/insmntque.9 +++ b/share/man/man9/insmntque.9 @@ -24,7 +24,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH .\" DAMAGE. .\" -.Dd January 29, 2022 +.Dd October 24, 2025 .Dt INSMNTQUE 9 .Os .Sh NAME @@ -56,7 +56,7 @@ The vnode must be exclusively locked. .Pp On failure, .Fn insmntque -resets vnode' operation vector to the vector of +resets vnode's operations vector to the vector of .Xr deadfs 9 , clears .Va v_data , @@ -71,7 +71,7 @@ failure is needed, the function may be used instead. It does not do any cleanup following a failure, leaving all the work to the caller. -In particular, the operation vector +In particular, the operations vector .Va v_op and .Va v_data diff --git a/share/man/man9/make_dev.9 b/share/man/man9/make_dev.9 index de56f350faa5..9f2c36fb39a4 100644 --- a/share/man/man9/make_dev.9 +++ b/share/man/man9/make_dev.9 @@ -25,7 +25,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd January 19, 2025 +.Dd November 4, 2025 .Dt MAKE_DEV 9 .Os .Sh NAME @@ -387,14 +387,18 @@ function is the same as: destroy_dev_sched_cb(cdev, NULL, NULL); .Ed .Pp -The +Neither the .Fn d_close -driver method cannot call +driver method, nor a +.Xr devfs_cdevpriv 9 +.Fa dtr +method can .Fn destroy_dev directly. Doing so causes deadlock when .Fn destroy_dev -waits for all threads to leave the driver methods. +waits for all threads to leave the driver methods and finish executing any +per-open destructors. Also, because .Fn destroy_dev sleeps, no non-sleepable locks may be held over the call. diff --git a/share/man/man9/namei.9 b/share/man/man9/namei.9 index 5bdffce8c360..a42043587432 100644 --- a/share/man/man9/namei.9 +++ b/share/man/man9/namei.9 @@ -31,7 +31,7 @@ .\" If you integrate this manpage in another OS, I'd appreciate a note .\" - eivind@FreeBSD.org .\" -.Dd May 16, 2025 +.Dd September 30, 2025 .Dt NAMEI 9 .Os .Sh NAME @@ -206,12 +206,6 @@ This flag allows the function to return the parent (directory) vnode in an unlocked state. The parent vnode must be released separately by using .Xr vrele 9 . -.It Dv WANTPARENT -This flag allows the -.Fn namei -function to return the parent (directory) vnode in an unlocked state. -The parent vnode must be released separately by using -.Xr vrele 9 . .It Dv FAILIFEXISTS Makes the .Nm diff --git a/share/man/man9/nvmem.9 b/share/man/man9/nvmem.9 index 812cd09a5e35..fa88cbb91854 100644 --- a/share/man/man9/nvmem.9 +++ b/share/man/man9/nvmem.9 @@ -59,19 +59,19 @@ Get the size of the cell base on the reg property on the node. Return the size or ENOENT if the cell name wasn't found .It Fn nvmem_read_cell_by_name "phandle_t node" "const char *name" "void *cell" "size_t buflen" Get the cell content based on the name. -Return 0 on sucess or ENOENT if the cell doesn't exists, ENXIO if no provider device was found, +Return 0 on success or ENOENT if the cell doesn't exists, ENXIO if no provider device was found, EINVAL if the size isn't correct. .It Fn nvmem_read_cell_by_idx "phandle_t node" "int idx" "void *cell" "size_t buflen" Get the cell content based on the id. -Return 0 on sucess or ENOENT if the cell doesn't exists, ENXIO if no provider device was found, +Return 0 on success or ENOENT if the cell doesn't exists, ENXIO if no provider device was found, EINVAL if the size isn't correct. .It Fn nvmem_write_cell_by_name "phandle_t node" "const char *name" "void *cell" "size_t buflen" Write the cell content based on the name. -Return 0 on sucess or ENOENT if the cell doesn't exists, ENXIO if no provider device was found, +Return 0 on success or ENOENT if the cell doesn't exists, ENXIO if no provider device was found, EINVAL if the size isn't correct. .It Fn nvmem_write_cell_by_idx "phandle_t node" "int idx" "void *cell" "size_t buflen" Write the cell content based on the id. -Return 0 on sucess or ENOENT if the cell doesn't exists, ENXIO if no provider device was found, +Return 0 on success or ENOENT if the cell doesn't exists, ENXIO if no provider device was found, EINVAL if the size isn't correct. .El .Sh DEVICE METHODS diff --git a/share/man/man9/ofw_bus_is_compatible.9 b/share/man/man9/ofw_bus_is_compatible.9 index 1b44807e84e8..fcfe8755cf86 100644 --- a/share/man/man9/ofw_bus_is_compatible.9 +++ b/share/man/man9/ofw_bus_is_compatible.9 @@ -61,7 +61,7 @@ older revisions of the driver. If hardware revision B is backward compatible with revision A device tree node can signal this compatibility by providing both "vndr,hrdwrA" and "vndr,hrdwrB" strings in -the "compatibile" property value. +the "compatible" property value. This way older driver can use features available only in revision A, and the new version of the driver can take advantage of revision B feature set. diff --git a/share/man/man9/pci.9 b/share/man/man9/pci.9 index eeb62a63a2bd..871f69f887a6 100644 --- a/share/man/man9/pci.9 +++ b/share/man/man9/pci.9 @@ -523,7 +523,7 @@ device is not a PCI-express device, returns zero. When completion timeouts are disabled for .Fa dev , -this function returns the maxmimum timeout that would be used if timeouts +this function returns the maximum timeout that would be used if timeouts were enabled. .Pp The diff --git a/share/man/man9/priv.9 b/share/man/man9/priv.9 index 80d0542e9bdf..6343940c89fb 100644 --- a/share/man/man9/priv.9 +++ b/share/man/man9/priv.9 @@ -26,7 +26,7 @@ .\" NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS .\" SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd December 19, 2018 +.Dd November 12, 2025 .Dt PRIV 9 .Os .Sh NAME @@ -106,6 +106,7 @@ privilege checks, and the caller is unable to tell if an access control failure occurred. .Sh SEE ALSO .Xr jail 2 , +.Xr dtrace_priv 4 , .Xr mac 9 , .Xr ucred 9 .Sh AUTHORS diff --git a/share/man/man9/refcount.9 b/share/man/man9/refcount.9 index 78631f9a865a..7375f429a607 100644 --- a/share/man/man9/refcount.9 +++ b/share/man/man9/refcount.9 @@ -106,7 +106,7 @@ but additionally checks that the value does not overflow as result of the operation. It returns .Dv true -if the reference was sucessfully obtained, and +if the reference was successfully obtained, and .Dv false if it was not, due to the overflow. .Pp diff --git a/share/man/man9/seqc.9 b/share/man/man9/seqc.9 index e13d73ecb5d7..b1e59b6b7af1 100644 --- a/share/man/man9/seqc.9 +++ b/share/man/man9/seqc.9 @@ -81,7 +81,7 @@ repeated. In case when sequence number is odd the object change is in progress and the reader will wait until the write will the sequence number will become even. .Sh EXAMPLES -The following example for a writer changees the +The following example for a writer changes the .Va var1 and .Va var2 diff --git a/share/man/man9/style.9 b/share/man/man9/style.9 index 26c7a3b2aa64..c9c3af23864a 100644 --- a/share/man/man9/style.9 +++ b/share/man/man9/style.9 @@ -816,7 +816,7 @@ If no local variables are declared, the first line should be a statement. Older versions of this .Nm document required a blank line before code. -Such lines should be removed when signficant changes are made to the code. +Such lines should be removed when significant changes are made to the code. .Pp Use .Xr printf 3 , @@ -947,7 +947,7 @@ namespace foo::bar { .Ed .Pp Member function declarations should follow the same style used for standalone -function protoypes except that a space should be used between a function's +function prototypes except that a space should be used between a function's return type and name. .Pp Function definitions at the top level should use a newline after the function diff --git a/share/man/man9/sysctl.9 b/share/man/man9/sysctl.9 index 92c8532c8ed2..31031e64f713 100644 --- a/share/man/man9/sysctl.9 +++ b/share/man/man9/sysctl.9 @@ -23,7 +23,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd September 1, 2020 +.Dd September 28, 2025 .Dt SYSCTL 9 .Os .Sh NAME @@ -863,14 +863,14 @@ flags to be set indicating the read and write disposition of the sysctl: .It Dv CTLFLAG_RD This is a read-only sysctl. .It Dv CTLFLAG_RDTUN -This is a read-only sysctl and tunable which is tried fetched once +This is a read-only sysctl and tunable which is fetched once from the system environment early during module load or system boot. .It Dv CTLFLAG_WR This is a writable sysctl. .It Dv CTLFLAG_RW This sysctl is readable and writable. .It Dv CTLFLAG_RWTUN -This is a readable and writeable sysctl and tunable which is tried +This is a readable and writeable sysctl and tunable which is fetched once from the system environment early during module load or system boot. .It Dv CTLFLAG_NOFETCH @@ -907,7 +907,7 @@ This sysctl can be written to by processes in When iterating the sysctl name space, do not list this sysctl. .It Dv CTLFLAG_TUN Advisory flag that a system tunable also exists for this variable. -The initial sysctl value is tried fetched once from the system +The initial sysctl value is fetched once from the system environment early during module load or system boot. .It Dv CTLFLAG_DYN Dynamically created OIDs automatically get this flag set. diff --git a/share/man/man9/taskqueue.9 b/share/man/man9/taskqueue.9 index 5afeffcb558b..8ffa9a96d816 100644 --- a/share/man/man9/taskqueue.9 +++ b/share/man/man9/taskqueue.9 @@ -530,7 +530,7 @@ If queueing delays cannot be tolerated then a private taskqueue should be created with a dedicated processing thread. .Sh SEE ALSO .Xr callout 9 , -.Xr ithread 9 , +.Xr intr_event 9 , .Xr kthread 9 , .Xr swi 9 .Sh HISTORY diff --git a/share/man/man9/ucred.9 b/share/man/man9/ucred.9 index 38759bddb5b0..453df386ff18 100644 --- a/share/man/man9/ucred.9 +++ b/share/man/man9/ucred.9 @@ -24,7 +24,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH .\" DAMAGE. .\" -.Dd July 29, 2025 +.Dd August 29, 2025 .Dt UCRED 9 .Os .Sh NAME @@ -113,28 +113,26 @@ The actual copying is performed by .Pp The .Fn crsetgroups -and -.Fn crsetgroups_and_egid -functions set the +function sets the .Va cr_groups and .Va cr_ngroups -variables and allocates space as needed. -They also truncate the group list to the current maximum number of -groups. -No other mechanism should be used to modify the -.Va cr_groups -array. -Note that +variables representing the supplementary groups, allocating space as needed. +It also truncates the group list to the current maximum number of groups. +The .Fn crsetgroups_and_egid -will interpret the first element of +function is similar, but interprets separately the first group of .Va groups -as the new effective GID and the rest of the array as the supplementary groups, -and +as the effective GID to set, only setting the subsequent groups as supplementary +ones. +It will use .Va default_egid -will be used as the new effective GID only if +as the new effective GID if .Va groups is empty. +No other mechanism should be used to modify the +.Va cr_groups +array. .Pp The .Fn cru2x diff --git a/share/man/man9/uio.9 b/share/man/man9/uio.9 index e6240c4e51d3..b143eb6e8e62 100644 --- a/share/man/man9/uio.9 +++ b/share/man/man9/uio.9 @@ -23,7 +23,7 @@ .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.Dd March 11, 2017 +.Dd October 22, 2025 .Dt UIO 9 .Os .Sh NAME @@ -107,10 +107,14 @@ The I/O vector points into the kernel address space. Do not copy, already in object. .El .It Va uio_rw -The direction of the desired transfer, either -.Dv UIO_READ -or -.Dv UIO_WRITE . +The direction of the desired transfer. +The supported flags are: +.Bl -tag -width "UIO_WRITE" +.It Dv UIO_READ +Transfer data from the buffers into the I/O vectors. +.It Dv UIO_WRITE +Transfer data from the I/O vectors into the buffers. +.El .It Va uio_td The pointer to a .Vt "struct thread" diff --git a/share/man/man9/vn_fullpath.9 b/share/man/man9/vn_fullpath.9 index 116f519ec8aa..af459ed281c0 100644 --- a/share/man/man9/vn_fullpath.9 +++ b/share/man/man9/vn_fullpath.9 @@ -1,6 +1,13 @@ +.\"- +.\" SPDX-License-Identifier: BSD-2-Clause .\" .\" Copyright (c) 2003 Robert N. M. Watson. .\" All rights reserved. +.\" Copyright (c) 2025 The FreeBSD Foundation +.\" +.\" Portions of this documentation were written by Olivier Certner +.\" <olce@FreeBSD.org> at Kumacom SARL under sponsorship from the FreeBSD +.\" Foundation. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -25,7 +32,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH .\" DAMAGE. .\" -.Dd June 15, 2021 +.Dd September 29, 2025 .Dt VN_FULLPATH 9 .Os .Sh NAME @@ -35,23 +42,64 @@ .In sys/param.h .In sys/vnode.h .Ft int -.Fo vn_fullpath -.Fa "struct vnode *vp" "char **retbuf" "char **freebuf" +.Fn vn_fullpath "struct vnode *vp" "char **retbuf" "char **freebuf" +.Ft int +.Fn vn_fullpath_jail "struct vnode *vp" "char **retbuf" "char **freebuf" +.Ft int +.Fn vn_fullpath_global "struct vnode *vp" "char **retbuf" "char **freebuf" +.Ft int +.Fo vn_fullpath_hardlink +.Fa "struct vnode *vp" "struct vnode *dvp" +.Fa "const char *hrdl_name" "size_t hrdl_name_length" +.Fa "char **retbuf" "char **freebuf" "size_t *buflen" .Fc .Sh DESCRIPTION The +.Fn vn_fullpath , +.Fn vn_fullpath_jail , +.Fn vn_fullpath_global +and +.Fn vn_fullpath_hardlink +functions make a +.Dq best effort +attempt at generating a string pathname for the passed vnode. +They differ in which directory the returned path is relative to, except for +.Fn vn_fullpath_hardlink +which behaves like .Fn vn_fullpath -function makes a -.Dq "best effort" -attempt to generate a string pathname for -the passed vnode; the resulting path, if any, will be relative to -the root directory of the process associated with the passed thread pointer. +in this respect and is described at the end. +.Pp The .Fn vn_fullpath -function -is implemented by inspecting the VFS name cache, and attempting to -reconstruct a path from the process root to the object. +function returns a path relative to the root directory of the process associated +with the passed thread pointer. +That root directory is either the system's or the thread's process' containing +jail's root directory, or some descendant directory of such established by some +.Xr chroot 2 +call. +The +.Fn vn_fullpath_jail +function returns a path relative to the passed thread's process' current jail's +root, ignoring intervening +.Xr chroot 2 +calls possibly made inside that jail. +The +.Fn vn_fullpath_global +function returns the full path from the system root, ignoring all jail roots and +.Xr chroot 2 +calls. +.Pp +Paths that the kernel intends to communicate to the passed user thread should +exclusively be obtained via +.Fn vn_fullpath . +Paths obtained via +.Fn vn_fullpath_jail +or +.Fn vn_fullpath_global +are only useful for specific kernel checks or auditing purposes. .Pp +All these functions are implemented by inspecting the VFS name cache, and +attempting to reconstruct a path from the process root to the object. This process is necessarily unreliable for several reasons: intermediate entries in the path may not be found in the cache; files may have more than one name (hard links), not all file systems use the name cache @@ -59,12 +107,12 @@ than one name (hard links), not all file systems use the name cache be used for more than one file (in the context of file systems covering other file systems); a file may have no name (if deleted but still open or referenced). -However, the resulting string may still be more useable to a user than +However, the resulting string may still be more usable to a user than a vnode pointer value, or a device number and inode number. Code consuming the results of this function should anticipate (and properly handle) failure. .Pp -Its arguments are: +These functions take the following arguments: .Bl -tag -width ".Fa freebuf" .It Fa vp The vnode to search for. @@ -72,17 +120,13 @@ No need to be locked by the caller. .It Fa retbuf Pointer to a .Vt "char *" -that -.Fn vn_fullpath -may (on success) point at a newly -allocated buffer containing the resulting pathname. +that may be set (on success) to point at a newly allocated buffer containing the +resulting pathname. .It Fa freebuf Pointer to a .Vt "char *" -that -.Fn vn_fullpath -may (on success) point at a buffer -to be freed, when the caller is done with +that may be set (on success) to point at a buffer to be freed, when the caller +is done with .Fa retbuf . .El .Pp @@ -110,11 +154,43 @@ and if so, invoke .Xr free 9 with a pool type of .Dv M_TEMP . +.Pp +The +.Fn vn_fullpath_hardlink +function is a convenience wrapper which automatically appends the hardlink name +passed via arguments +.Fa hrdl_name +and +.Fa hrdl_name_length +to the result of calling +.Fn vn_fullpath +on the vnode's parent directory. +It requires the results of a prior call to +.Xr namei 9 +with flag +.Dv WANTPARENT +to be passed in the +.Fa vp +and +.Fa dvp +arguments. +Argument +.Fa buflen +must point to a valid storage containing the size of the desired buffer, which +will be reduced to +.Dv MAXPATHLEN +if in excess of it. .Sh RETURN VALUES If the vnode is successfully converted to a pathname, 0 is returned; otherwise, an error number is returned. .Sh SEE ALSO .Xr free 9 .Sh AUTHORS -This manual page was written by -.An Robert Watson Aq Mt rwatson@FreeBSD.org . +.An -nosplit +This manual page was initially written by +.An Robert Watson Aq Mt rwatson@FreeBSD.org +to describe the +.Fn vn_fullpath +function. +The descriptions of the other related functions were added by +.An Olivier Certner Aq Mt olce@FreeBSD.org . diff --git a/share/misc/bsd-family-tree b/share/misc/bsd-family-tree index 07f79008257f..01dfd4cc0cbf 100644 --- a/share/misc/bsd-family-tree +++ b/share/misc/bsd-family-tree @@ -83,407 +83,410 @@ FreeBSD 2.0.5 \ | BSD/OS 2.0.1 | | | | OpenBSD 2.3 | | | | | | BSD/OS 3.0 | FreeBSD 2.1 | | | | - | | | | *--NetBSD 1.1 -. BSD/OS 2.1 - | FreeBSD 2.1.5 | | | \ | - | | | | *--NetBSD 1.2 \ BSD/OS 3.0 - | FreeBSD 2.1.6 | | | \ OpenBSD 2.0 | - | | | | | \ | | - | FreeBSD 2.1.6.1 | | | \ | | - | | | | | \ | | - | FreeBSD 2.1.7 | | | | | | - | | | | | NetBSD 1.2.1 | | - | FreeBSD 2.1.7.1 | | | | | - | | | | | | - | | | | | | - *-FreeBSD 2.2 | | | | | - | \ | | | | | - | FreeBSD 2.2.1 | | | | | - | | | | | | | - | FreeBSD 2.2.2 | | | OpenBSD 2.1 | - | | | | | | | - | FreeBSD 2.2.5 | | | | | - | | | | | OpenBSD 2.2 | - | | | | *--NetBSD 1.3 | | - | FreeBSD 2.2.6 | | | | | | - | | | | | NetBSD 1.3.1 | BSD/OS 3.1 - | | | | | | OpenBSD 2.3 | - | | | | | NetBSD 1.3.2 | | - | FreeBSD 2.2.7 | | | | | | - | | | | | | | BSD/OS 4.0 - | FreeBSD 2.2.8 | | | | | | - | | | | | | | | - | v | | | | OpenBSD 2.4 | - | FreeBSD 2.2.9 | | | | | | - | | | | | | | -FreeBSD 3.0 <--------* | | v | | - | | | NetBSD 1.3.3 | | - *---FreeBSD 3.1 | | | | - | | | | | BSD/OS 4.0.1 - | FreeBSD 3.2----* | .--*--NetBSD 1.4 OpenBSD 2.5 | - | | | | | | | | | - | | | | | | | | | - | | | | | | | | | - | FreeBSD 3.3 | | | | NetBSD 1.4.1 | | - | | | | | | | OpenBSD 2.6 | - | FreeBSD 3.4 | | | | | | | - | | | | | | | | BSD/OS 4.1 -FreeBSD 4.0 | | | | | NetBSD 1.4.2 | | - | | | | | | | | | - | | | | | | | | | - | FreeBSD 3.5 | | | | | OpenBSD 2.7 | - | | | | | | | | | - | FreeBSD 3.5.1 | | | | | | | - | | | | | | | | - *---FreeBSD 4.1 | | | | | | | - | | | | | | | | | - | FreeBSD 4.1.1 | | / | | | | - | | | | / | | | | - | FreeBSD 4.2 Darwin/ | NetBSD 1.4.3 | | - | | Mac OS X | OpenBSD 2.8 BSD/OS 4.2 - | | | | | | - | | | | | | - | | 10.0 *--NetBSD 1.5 | | - | FreeBSD 4.3 | | | | | - | | | | | OpenBSD 2.9 | - | | | | NetBSD 1.5.1 | | - | | | | | | | - | FreeBSD 4.4-. | | NetBSD 1.5.2 | | - | | | Mac OS X | | | | - | | | 10.1 | | OpenBSD 3.0 | - | FreeBSD 4.5 | | | | | | - | | \ | | | | BSD/OS 4.3 - | FreeBSD 4.6 \ | | | OpenBSD 3.1 | - | | \ | | NetBSD 1.5.3 | | - | FreeBSD 4.6.2 Mac OS X | | | - | | 10.2 | | | - | FreeBSD 4.7 | | | | - | | | *--NetBSD 1.6 OpenBSD 3.2 | - | FreeBSD 4.8 | | | | | - | | | | NetBSD 1.6.1 | | - | |--------. | | | OpenBSD 3.3 BSD/OS 5.0 - | | \ | | | | | - | FreeBSD 4.9 | | | | OpenBSD 3.4 BSD/OS 5.1 ISE - | | | | | | | - | | | | | NetBSD 1.6.2 | - | | | | | | | - | | | | | | OpenBSD 3.5 - | | | | | v | - | FreeBSD 4.10 | | | | - | | | | | | - | FreeBSD 4.11 | | | | - | | | | | - | `-|------|-----------------|---------------------. - | | | | \ -FreeBSD 5.0 | | | | - | | | | | -FreeBSD 5.1 | | | DragonFly 1.0 - | \ | | | | - | ----- Mac OS X | | | - | 10.3 | | | -FreeBSD 5.2 | | | | - | | | | | | - | FreeBSD 5.2.1 | | | | - | | | | | - *-------FreeBSD 5.3 | | | | - | | | | OpenBSD 3.6 | - | | | *--NetBSD 2.0 | | - | | | | | | | DragonFly 1.2.0 - | | Mac OS X | | NetBSD 2.0.2 | | - | | 10.4 | | | | | - | FreeBSD 5.4 | | | | | | - | | | | | | OpenBSD 3.7 | - | | | | | NetBSD 2.0.3 | | - | | | | | | | | - *--FreeBSD | | | | v OpenBSD 3.8 | - | 6.0 | | | | | | - | | | | | \ | | - | | | | | NetBSD 2.1 | | - | | | | | | | - | | | | *--NetBSD 3.0 | | - | | | | | | | | DragonFly 1.4.0 - | | | | | | | OpenBSD 3.9 | - | FreeBSD | | | | | | | - | 6.1 | | | | | | | - | | FreeBSD 5.5 | | | | | | - | | | | | NetBSD 3.0.1 | DragonFly 1.6.0 - | | | | | | | | - | | | | | | OpenBSD 4.0 | - | | | | | NetBSD 3.0.2 | | - | | | | NetBSD 3.1 | | - | FreeBSD 6.2 | | | | - | | | | | DragonFly 1.8.0 - | | | | OpenBSD 4.1 | - | | | | | DragonFly 1.10.0 - | | Mac OS X | | | - | | 10.5 | | | - | | | | OpenBSD 4.2 | - | | | *--NetBSD 4.0 | | - | FreeBSD 6.3 | | | | | - | \ | | | | | - *--FreeBSD | | | | | DragonFly 1.12.0 - | 7.0 | | | | | | - | | | | | | OpenBSD 4.3 | - | | | | | NetBSD | DragonFly 2.0.0 - | | FreeBSD | | 4.0.1 OpenBSD 4.4 | - | | 6.4 | | | | - | | | | | | - | FreeBSD 7.1 | | | | - | | | | | DragonFly 2.2.0 - | FreeBSD 7.2 | *--NetBSD OpenBSD 4.5 | - | \ | | 5.0 | | - | \ | | / | \ | | - | | Mac OS X | | | \ | | - | | 10.6 | | | \ | | - | | | | | | NetBSD | DragonFly 2.4.0 - | | | | | | 5.0.1 OpenBSD 4.6 | - | | | | | | | | | - *--FreeBSD | | | | | | | | - | 8.0 | | | | | | | | - | | FreeBSD | | | | NetBSD | | - | | 7.3 | | | | 5.0.2 | DragonFly 2.6.0 - | | | | | | | OpenBSD 4.7 | - | FreeBSD | | | | | | | - | 8.1 | | | | | | | - | | | | | | | | DragonFly 2.8.2 - | | | | | | | OpenBSD 4.8 | - | | | | | | *--NetBSD | | - | FreeBSD FreeBSD | | | 5.1 | | - | 8.2 7.4 | | | | | DragonFly 2.10.1 - | | | | | | OpenBSD 4.9 | - | `-----. Mac OS X | | | | | - | \ 10.7 | | | | | - | | | | | | OpenBSD 5.0 | - *--FreeBSD | | | | | | | - | 9.0 | | | | NetBSD | DragonFly 3.0.1 - | | FreeBSD | | | 5.1.2 | | - | | 8.3 | | | | | | - | | | | | | NetBSD | | - | | | | | | 5.1.3 | | - | | | | | | | | | - | | | | | | NetBSD | | - | | | | | | 5.1.4 | | - | | | | | | OpenBSD 5.1 | - | | | Mac OS X | `--------. | | - | | | 10.8 | | | | - | | | | *--NetBSD | | | - | | | | | 6.0 | | | - | | | | | | | | OpenBSD 5.2 DragonFly 3.2.1 - | FreeBSD | | | | | NetBSD | | - | 9.1 | | | | | 5.2 | | - | | | | | | | | | | - | | | | | | | NetBSD | | - | | | | | | | 5.2.1 | | - | | | | | | | | | | - | | | | | | | NetBSD | | - | | | | | | | 5.2.2 | | - | | | | | | | | | - | | | | | | \ | | - | | | | | | NetBSD | | - | | | | | | 6.0.1 | | - | | | | | | | OpenBSD 5.3 DragonFly 3.4.1 - | | | | | | NetBSD | | - | | | | | | 6.0.2 | | - | | | | | | | | | - | | | | | | NetBSD | | - | | | | | | 6.0.3 | | - | | | | | | | | | - | | | | | | NetBSD | | - | | | | | | 6.0.4 | | - | | | | | | | | | - | | | | | | NetBSD | | - | | | | | | 6.0.5 | | - | | | | | | | | | - | | | | | | NetBSD | | - | | | | | | 6.0.6 | | - | | | | | | | | - | | | | | *--NetBSD | | - | | | | | 6.1 | | - | | FreeBSD | | | | | - | | 8.4 | | NetBSD | | - | | | | | 6.1.1 | | - | | | | | | | - | FreeBSD | | NetBSD | | - | 9.2 | | 6.1.2 | | - | | Mac OS X | | | | - | | 10.9 | | OpenBSD 5.4 | - | `-----. | | | | DragonFly 3.6.0 - | \ | | | | | - *--FreeBSD | | | NetBSD | | - | 10.0 | | | 6.1.3 | | - | | | | | | | | - | | | | | | | DragonFly 3.6.1 - | | | | | | | | - | | | | | | | | - | | | | | | | DragonFly 3.6.2 - | | | | | NetBSD | | - | | | | | 6.1.4 | | - | | | | | | | | - | | | | | | OpenBSD 5.5 | - | | | | | | | | - | | | | | | | DragonFly 3.8.0 - | | | | | | | | - | | | | | | | | - | | | | | | | DragonFly 3.8.1 - | | | | | | | | - | | | | | | | | - | | | | | | | DragonFly 3.6.3 - | | | | | | | | - | | FreeBSD | | | | | - | | 9.3 | | | | | - | | | | NetBSD | DragonFly 3.8.2 - | | | | 6.1.5 | | - | | Mac OS X | | | - | | 10.10 | | | - | | | | OpenBSD 5.6 | - | FreeBSD | | | | - | 10.1 | | | DragonFly 4.0.1 - | | | | | | - | | | | | DragonFly 4.0.2 - | | | | | | - | | | | | DragonFly 4.0.3 - | | | | | | - | | | | | DragonFly 4.0.4 - | | | | | | - | | | | | DragonFly 4.0.5 - | | | | | | - | | | | OpenBSD 5.7 | - | | | | | DragonFly 4.2.0 - | FreeBSD | | | | - | 10.2 | | | | - | | macOS *--NetBSD 7.0 | | - | | 10.11 | | | OpenBSD 5.8 | - | | | | | `--. | DragonFly 4.4.1 - | FreeBSD | | | | OpenBSD 5.9 | - | 10.3 | | | | | | - | | | | | NetBSD | | - | | | | | 7.0.1 | | - | `------. | | | | | DragonFly 4.6.0 - | | | | | | | | - | | | | | | | | - *--FreeBSD | macOS | | | OpenBSD 6.0 | - | 11.0 | 10.12 | | NetBSD | | - | | | | | | 7.0.2 | | - | | | | | | | | - | | | | | *--NetBSD | | - | | | | | | 7.1 | | - | | | | | | | | | - | | | | | | | | | - | | | macOS | | | | DragonFly 4.8.0 - | | | 10.13 | | | OpenBSD 6.1 | - | FreeBSD | | | | | | DragonFly 5.0.0 - | 11.1 FreeBSD | | | | | | - | | 10.4 | | | | OpenBSD 6.2 DragonFly 5.0.1 - | | | | | | | | - | `------. | | | NetBSD | DragonFly 5.0.2 - | | | | | 7.1.1 | | - | | | | | | | | - | | | | | NetBSD | | - | | | | | 7.1.2 `--. | - | | | | | | | - | | | | `-----. OpenBSD 6.3 | - | | | *--NetBSD | | DragonFly 5.2.0 - | | | | 8.0 | | | - | | | | | | | DragonFly 5.2.1 - | | | | | | | | - | | | | | | | DragonFly 5.2.2 - | FreeBSD | | | *--NetBSD | | - | 11.2 | | | 7.2 | | - | | macOS | | | | - | | 10.14 | | OpenBSD 6.4 | - | | | | | | | - | | | | | | DragonFly 5.4.0 - *--FreeBSD | | | | | | - | 12.0 | | | | | DragonFly 5.4.1 - | | | | | | OpenBSD 6.5 | - | | | | | | | | - | | | | | NetBSD | | - | | | | | 8.1 | DragonFly 5.6 - | | | | | | | | - | | | | | | | DragonFly 5.6.1 - | | FreeBSD macOS | | | | - | | 11.3 10.15 | | | | - | FreeBSD | | | | OpenBSD 6.6 | - | 12.1 | macOS | `-------. | | - | | | 10.15.1 | | | DragonFly 5.6.2 - | | | | *--NetBSD | | | - | | | | | 9.0 | | | - | | | | | | | | | - | | | | | | | | DragonFly 5.8 - | | | | | | | | | - | | | | | | | | DragonFly 5.6.3 - | | | | | | NetBSD | | - | | | | | | 8.2 | | - | | | | | | | | DragonFly 5.8.1 - | | | | | | | OpenBSD 6.7 | - | | FreeBSD | | | | | | - | | 11.4 | | | | | | - | | | | | | | DragonFly 5.8.2 - | | | | | | | DragonFly 5.8.3 - | | | | NetBSD | OpenBSD 6.8 | - | FreeBSD macOS | 9.1 | | | - | 12.2 11 | | | | | - | | | | | | | | - | `------. | | | | | | - | | | | | | | | - *--FreeBSD | | | | | | | - | 13.0 | | | NetBSD | OpenBSD 6.9 DragonFly 6.0.0 - | | | | | 9.2 | | | - | | | | | | | | DragonFly 6.0.1 - | | | | | | | | | - | | FreeBSD macOS | | | OpenBSD 7.0 | - | | 12.3 12 | | | | | - | | | | | | | | DragonFly 6.2.1 - | | | | | | | OpenBSD 7.1 | - | FreeBSD | | | | | | | - | 13.1 | | | | | | | - | | | | | | | | DragonFly 6.2.2 - | | | | | NetBSD | | | - | | | macOS | 9.3 | OpenBSD 7.2 | - | | | 13 | | | | | - | | FreeBSD | | | | | | - | | 12.4 | | | | | | - | | | | | | | DragonFly 6.4.0 - | | | | | | OpenBSD 7.3 | - | FreeBSD | | | | | | - | 13.2 | | | | | | - | | | | | | | | - | `------. | | | | | | - | | macOS | | | | | - | | 14 | | | | | - | | | | | | OpenBSD 7.4 | - *--FreeBSD | | | | | | | - | 14.0 | | | | | | | - | | | | | | | | | - | | FreeBSD | | NetBSD | | | - | | 13.3 | | 9.4 | | | - | | | | | | | | - | | | | *--NetBSD | | | - | | | | | 10.0 | | | - | | | | | | | | | - | | | | | | | OpenBSD 7.5 | - | | | | | | NetBSD | | - | | | | | | 8.3 | | - | FreeBSD | | | | | | - | 14.1 | | | | | | - | | | macOS | | | | - | | | 15 | | | | - | | FreeBSD | | | | | - | | 13.4 | | | OpenBSD 7.6 | - | FreeBSD | | | | | | - | 14.2 | | | | | | - | | | | | NetBSD | | - | | | | | 10.1 | | - | | FreeBSD | | | | - | | 13.5 | | | | - | | | | OpenBSD 7.7 | - | | | | | DragonFly 6.4.1 - | | | | | DragonFly 6.4.2 - | FreeBSD | | | | - | 14.3 | | | | - | | | | | -FreeBSD 15 -current | NetBSD -current OpenBSD -current DragonFly -current - | | | | | - v v v v v + | | | | *--NetBSD 1.1 ---. BSD/OS 2.1 + | FreeBSD 2.1.5 | | | \ | + | | | | *--NetBSD 1.2 \ BSD/OS 3.0 + | FreeBSD 2.1.6 | | | \ OpenBSD 2.0 | + | | | | | \ | | + | FreeBSD 2.1.6.1 | | | \ | | + | | | | | \ | | + | FreeBSD 2.1.7 | | | | | | + | | | | | NetBSD 1.2.1 | | + | FreeBSD 2.1.7.1 | | | | | + | | | | | | + | | | | | | + *-FreeBSD 2.2 | | | | | + | \ | | | | | + | FreeBSD 2.2.1 | | | | | + | | | | | | | + | FreeBSD 2.2.2 | | | OpenBSD 2.1 | + | | | | | | | + | FreeBSD 2.2.5 | | | | | + | | | | | OpenBSD 2.2 | + | | | | *--NetBSD 1.3 | | + | FreeBSD 2.2.6 | | | | | | + | | | | | NetBSD 1.3.1 | BSD/OS 3.1 + | | | | | | OpenBSD 2.3 | + | | | | | NetBSD 1.3.2 | | + | FreeBSD 2.2.7 | | | | | | + | | | | | | | BSD/OS 4.0 + | FreeBSD 2.2.8 | | | | | | + | | | | | | | | + | v | | | | OpenBSD 2.4 | + | FreeBSD 2.2.9 | | | | | | + | | | | | | | +FreeBSD 3.0 <--------* | | v | | + | | | NetBSD 1.3.3 | | + *---FreeBSD 3.1 | | | | + | | | | | BSD/OS 4.0.1 + | FreeBSD 3.2----* | .--*--NetBSD 1.4 OpenBSD 2.5 | + | | | | | | | | | + | | | | | | | | | + | | | | | | | | | + | FreeBSD 3.3 | | | | NetBSD 1.4.1 | | + | | | | | | | OpenBSD 2.6 | + | FreeBSD 3.4 | | | | | | | + | | | | | | | | BSD/OS 4.1 +FreeBSD 4.0 | | | | | NetBSD 1.4.2 | | + | | | | | | | | | + | | | | | | | | | + | FreeBSD 3.5 | | | | | OpenBSD 2.7 | + | | | | | | | | | + | FreeBSD 3.5.1 | | | | | | | + | | | | | | | | + *---FreeBSD 4.1 | | | | | | | + | | | | | | | | | + | FreeBSD 4.1.1 | | / | | | | + | | | | / | | | | + | FreeBSD 4.2 Darwin/ | NetBSD 1.4.3 | | + | | Mac OS X | OpenBSD 2.8 BSD/OS 4.2 + | | | | | | + | | | | | | + | | 10.0 *--NetBSD 1.5 | | + | FreeBSD 4.3 | | | | | + | | | | | OpenBSD 2.9 | + | | | | NetBSD 1.5.1 | | + | | | | | | | + | FreeBSD 4.4-. | | NetBSD 1.5.2 | | + | | | Mac OS X | | | | + | | | 10.1 | | OpenBSD 3.0 | + | FreeBSD 4.5 | | | | | | + | | \ | | | | BSD/OS 4.3 + | FreeBSD 4.6 \ | | | OpenBSD 3.1 | + | | \ | | NetBSD 1.5.3 | | + | FreeBSD 4.6.2 Mac OS X | | | + | | 10.2 | | | + | FreeBSD 4.7 | | | | + | | | *--NetBSD 1.6 OpenBSD 3.2 | + | FreeBSD 4.8 | | | | | + | | | | NetBSD 1.6.1 | | + | |--------. | | | OpenBSD 3.3 BSD/OS 5.0 + | | \ | | | | | + | FreeBSD 4.9 | | | | OpenBSD 3.4 BSD/OS 5.1 ISE + | | | | | | | + | | | | | NetBSD 1.6.2 | + | | | | | | | + | | | | | | OpenBSD 3.5 + | | | | | v | + | FreeBSD 4.10 | | | | + | | | | | | + | FreeBSD 4.11 | | | | + | | | | | + | `-|------|-------------------|-------------------. + | | | | \ +FreeBSD 5.0 | | | | + | | | | | +FreeBSD 5.1 | | | DragonFly 1.0 + | \ | | | | + | ----- Mac OS X | | | + | 10.3 | | | +FreeBSD 5.2 | | | | + | | | | | | + | FreeBSD 5.2.1 | | | | + | | | | | + *-------FreeBSD 5.3 | | | | + | | | | OpenBSD 3.6 | + | | | *--NetBSD 2.0 | | + | | | | | | | DragonFly 1.2.0 + | | Mac OS X | | NetBSD 2.0.2 | | + | | 10.4 | | | | | + | FreeBSD 5.4 | | | | | | + | | | | | | OpenBSD 3.7 | + | | | | | NetBSD 2.0.3 | | + | | | | | | | | + *--FreeBSD | | | | v OpenBSD 3.8 | + | 6.0 | | | | | | + | | | | | \ | | + | | | | | NetBSD 2.1 | | + | | | | | | | + | | | | *--NetBSD 3.0 | | + | | | | | | | | DragonFly 1.4.0 + | | | | | | | OpenBSD 3.9 | + | FreeBSD | | | | | | | + | 6.1 | | | | | | | + | | FreeBSD 5.5 | | | | | | + | | | | | NetBSD 3.0.1 | DragonFly 1.6.0 + | | | | | | | | + | | | | | | OpenBSD 4.0 | + | | | | | NetBSD 3.0.2 | | + | | | | NetBSD 3.1 | | + | FreeBSD 6.2 | | | | + | | | | | DragonFly 1.8.0 + | | | | OpenBSD 4.1 | + | | | | | DragonFly 1.10.0 + | | Mac OS X | | | + | | 10.5 | | | + | | | | OpenBSD 4.2 | + | | | *--NetBSD 4.0 | | + | FreeBSD 6.3 | | | | | + | \ | | | | | + *--FreeBSD | | | | | DragonFly 1.12.0 + | 7.0 | | | | | | + | | | | | | OpenBSD 4.3 | + | | | | | NetBSD | DragonFly 2.0.0 + | | FreeBSD | | 4.0.1 OpenBSD 4.4 | + | | 6.4 | | | | + | | | | | | + | FreeBSD 7.1 | | | | + | | | | | DragonFly 2.2.0 + | FreeBSD 7.2 | *--NetBSD OpenBSD 4.5 | + | \ | | 5.0 | | + | \ | | / | \ | | + | | Mac OS X | | | \ | | + | | 10.6 | | | \ | | + | | | | | | NetBSD | DragonFly 2.4.0 + | | | | | | 5.0.1 OpenBSD 4.6 | + | | | | | | | | | + *--FreeBSD | | | | | | | | + | 8.0 | | | | | | | | + | | FreeBSD | | | | NetBSD | | + | | 7.3 | | | | 5.0.2 | DragonFly 2.6.0 + | | | | | | | OpenBSD 4.7 | + | FreeBSD | | | | | | | + | 8.1 | | | | | | | + | | | | | | | | DragonFly 2.8.2 + | | | | | | | OpenBSD 4.8 | + | | | | | | *--NetBSD | | + | FreeBSD FreeBSD | | | 5.1 | | + | 8.2 7.4 | | | | | DragonFly 2.10.1 + | | | | | | OpenBSD 4.9 | + | `-----. Mac OS X | | | | | + | \ 10.7 | | | | | + | | | | | | OpenBSD 5.0 | + *--FreeBSD | | | | | | | + | 9.0 | | | | NetBSD | DragonFly 3.0.1 + | | FreeBSD | | | 5.1.2 | | + | | 8.3 | | | | | | + | | | | | | NetBSD | | + | | | | | | 5.1.3 | | + | | | | | | | | | + | | | | | | NetBSD | | + | | | | | | 5.1.4 | | + | | | | | | OpenBSD 5.1 | + | | | Mac OS X | `--------. | | + | | | 10.8 | | | | + | | | | *--NetBSD | | | + | | | | | 6.0 | | | + | | | | | | | | OpenBSD 5.2 DragonFly 3.2.1 + | FreeBSD | | | | | NetBSD | | + | 9.1 | | | | | 5.2 | | + | | | | | | | | | | + | | | | | | | NetBSD | | + | | | | | | | 5.2.1 | | + | | | | | | | | | | + | | | | | | | NetBSD | | + | | | | | | | 5.2.2 | | + | | | | | | | | | + | | | | | | \ | | + | | | | | | NetBSD | | + | | | | | | 6.0.1 | | + | | | | | | | OpenBSD 5.3 DragonFly 3.4.1 + | | | | | | NetBSD | | + | | | | | | 6.0.2 | | + | | | | | | | | | + | | | | | | NetBSD | | + | | | | | | 6.0.3 | | + | | | | | | | | | + | | | | | | NetBSD | | + | | | | | | 6.0.4 | | + | | | | | | | | | + | | | | | | NetBSD | | + | | | | | | 6.0.5 | | + | | | | | | | | | + | | | | | | NetBSD | | + | | | | | | 6.0.6 | | + | | | | | | | | + | | | | | *--NetBSD | | + | | | | | 6.1 | | + | | FreeBSD | | | | | + | | 8.4 | | NetBSD | | + | | | | | 6.1.1 | | + | | | | | | | + | FreeBSD | | NetBSD | | + | 9.2 | | 6.1.2 | | + | | Mac OS X | | | | + | | 10.9 | | OpenBSD 5.4 | + | `-----. | | | | DragonFly 3.6.0 + | \ | | | | | + *--FreeBSD | | | NetBSD | | + | 10.0 | | | 6.1.3 | | + | | | | | | | | + | | | | | | | DragonFly 3.6.1 + | | | | | | | | + | | | | | | | | + | | | | | | | DragonFly 3.6.2 + | | | | | NetBSD | | + | | | | | 6.1.4 | | + | | | | | | | | + | | | | | | OpenBSD 5.5 | + | | | | | | | | + | | | | | | | DragonFly 3.8.0 + | | | | | | | | + | | | | | | | | + | | | | | | | DragonFly 3.8.1 + | | | | | | | | + | | | | | | | | + | | | | | | | DragonFly 3.6.3 + | | | | | | | | + | | FreeBSD | | | | | + | | 9.3 | | | | | + | | | | NetBSD | DragonFly 3.8.2 + | | | | 6.1.5 | | + | | Mac OS X | | | + | | 10.10 | | | + | | | | OpenBSD 5.6 | + | FreeBSD | | | | + | 10.1 | | | DragonFly 4.0.1 + | | | | | | + | | | | | DragonFly 4.0.2 + | | | | | | + | | | | | DragonFly 4.0.3 + | | | | | | + | | | | | DragonFly 4.0.4 + | | | | | | + | | | | | DragonFly 4.0.5 + | | | | | | + | | | | OpenBSD 5.7 | + | | | | | DragonFly 4.2.0 + | FreeBSD | | | | + | 10.2 | | | | + | | macOS *--NetBSD 7.0 | | + | | 10.11 | | | OpenBSD 5.8 | + | | | | | `--. | DragonFly 4.4.1 + | FreeBSD | | | | OpenBSD 5.9 | + | 10.3 | | | | | | + | | | | | NetBSD | | + | | | | | 7.0.1 | | + | `------. | | | | | DragonFly 4.6.0 + | | | | | | | | + | | | | | | | | + *--FreeBSD | macOS | | | OpenBSD 6.0 | + | 11.0 | 10.12 | | NetBSD | | + | | | | | | 7.0.2 | | + | | | | | | | | + | | | | | *--NetBSD | | + | | | | | | 7.1 | | + | | | | | | | | | + | | | | | | | | | + | | | macOS | | | | DragonFly 4.8.0 + | | | 10.13 | | | OpenBSD 6.1 | + | FreeBSD | | | | | | DragonFly 5.0.0 + | 11.1 FreeBSD | | | | | | + | | 10.4 | | | | OpenBSD 6.2 DragonFly 5.0.1 + | | | | | | | | + | `------. | | | NetBSD | DragonFly 5.0.2 + | | | | | 7.1.1 | | + | | | | | | | | + | | | | | NetBSD | | + | | | | | 7.1.2 `--. | + | | | | | | | + | | | | `-----. OpenBSD 6.3 | + | | | *--NetBSD | | DragonFly 5.2.0 + | | | | 8.0 | | | + | | | | | | | DragonFly 5.2.1 + | | | | | | | | + | | | | | | | DragonFly 5.2.2 + | FreeBSD | | | *--NetBSD | | + | 11.2 | | | 7.2 | | + | | macOS | | | | + | | 10.14 | | OpenBSD 6.4 | + | | | | | | | + | | | | | | DragonFly 5.4.0 + *--FreeBSD | | | | | | + | 12.0 | | | | | DragonFly 5.4.1 + | | | | | | OpenBSD 6.5 | + | | | | | | | | + | | | | | NetBSD | | + | | | | | 8.1 | DragonFly 5.6 + | | | | | | | | + | | | | | | | DragonFly 5.6.1 + | | FreeBSD macOS | | | | + | | 11.3 10.15 | | | | + | FreeBSD | | | | OpenBSD 6.6 | + | 12.1 | macOS | `-------. | | + | | | 10.15.1 | | | DragonFly 5.6.2 + | | | | *--NetBSD | | | + | | | | | 9.0 | | | + | | | | | | | | | + | | | | | | | | DragonFly 5.8 + | | | | | | | | | + | | | | | | | | DragonFly 5.6.3 + | | | | | | NetBSD | | + | | | | | | 8.2 | | + | | | | | | | | DragonFly 5.8.1 + | | | | | | | OpenBSD 6.7 | + | | FreeBSD | | | | | | + | | 11.4 | | | | | | + | | | | | | | DragonFly 5.8.2 + | | | | | | | DragonFly 5.8.3 + | | | | NetBSD | OpenBSD 6.8 | + | FreeBSD macOS | 9.1 | | | + | 12.2 11 | | | | | + | | | | | | | | + | `------. | | | | | | + | | | | | | | | + *--FreeBSD | | | | | | | + | 13.0 | | | NetBSD | OpenBSD 6.9 DragonFly 6.0.0 + | | | | | 9.2 | | | + | | | | | | | | DragonFly 6.0.1 + | | | | | | | | | + | | FreeBSD macOS | | | OpenBSD 7.0 | + | | 12.3 12 | | | | | + | | | | | | | | DragonFly 6.2.1 + | | | | | | | OpenBSD 7.1 | + | FreeBSD | | | | | | | + | 13.1 | | | | | | | + | | | | | | | | DragonFly 6.2.2 + | | | | | NetBSD | | | + | | | macOS | 9.3 | OpenBSD 7.2 | + | | | 13 | | | | | + | | FreeBSD | | | | | | + | | 12.4 | | | | | | + | | | | | | | DragonFly 6.4.0 + | | | | | | OpenBSD 7.3 | + | FreeBSD | | | | | | + | 13.2 | | | | | | + | | | | | | | | + | `------. | | | | | | + | | macOS | | | | | + | | 14 | | | | | + | | | | | | OpenBSD 7.4 | + *--FreeBSD | | | | | | | + | 14.0 | | | | | | | + | | | | | | | | | + | | FreeBSD | | NetBSD | | | + | | 13.3 | | 9.4 | | | + | | | | | | | | + | | | | *--NetBSD | | | + | | | | | 10.0 | | | + | | | | | | | | | + | | | | | | | OpenBSD 7.5 | + | | | | | | NetBSD | | + | | | | | | 8.3 | | + | FreeBSD | | | | | | + | 14.1 | | | | | | + | | | macOS | | | | + | | | 15 | | | | + | | FreeBSD | | | | | + | | 13.4 | | | OpenBSD 7.6 | + | FreeBSD | | | | | | + | 14.2 | | | | | | + | | | | | NetBSD | | + | | | | | 10.1 | | + | | FreeBSD | | | | + | | 13.5 | | | | + | | | | OpenBSD 7.7 | + | | | | | DragonFly 6.4.1 + | | | | | DragonFly 6.4.2 + | FreeBSD | | | | + | 14.3 | | | | + | macOS | | | + | 26 | | | + | | | OpenBSD 7.8 | + | | | | | +FreeBSD 16 -current | NetBSD -current OpenBSD -current DragonFly -current + | | | | | + v v v v v Time ---------------- @@ -925,6 +928,8 @@ OpenBSD 7.7 2025-04-28 [OBD] DragonFly 6.4.1 2025-04-30 [DFB] DragonFly 6.4.2 2025-05-09 [DFB] FreeBSD 14.3 2025-06-10 [FBD] +macOS 26 2025-09-15 [APL] +OpenBSD 7.8 2025-10-22 [OBD] Bibliography ------------------------ @@ -980,6 +985,15 @@ URL: https://web.archive.org/web/20090427195917/http://ezine.daemonnews.org/2001 ("what are the differences between FreeBSD, NetBSD, and OpenBSD?") +End-of-Life (EOL) +----------------- +The FreeBSD family tree shows when a release was published. +If you would like to know when the support ends, just look at +https://www.freebsd.org/security/#sup and +https://www.freebsd.org/security/unsupported +For other operating systems, see https://endoflife.date + + Acknowledgments --------------- @@ -989,5 +1003,5 @@ original BSD announcements from Usenet or tapes. Steven M. Schultz for providing 2.8BSD, 2.10BSD, 2.11BSD manual pages. -- -Copyright (c) 1997-2024 Wolfram Schneider <wosch@FreeBSD.org> +Copyright (c) 1997-2025 Wolfram Schneider <wosch@FreeBSD.org> URL: https://cgit.freebsd.org/src/tree/share/misc/bsd-family-tree diff --git a/share/misc/committers-doc.dot b/share/misc/committers-doc.dot index ba4c229bc658..8c9fe4cf9991 100644 --- a/share/misc/committers-doc.dot +++ b/share/misc/committers-doc.dot @@ -106,6 +106,7 @@ rene [label="Rene Ladan\nrene@FreeBSD.org\n2008/11/03"] ryusuke [label="Ryusuke Suzuki\nryusuke@FreeBSD.org\n2009/12/21"] salvadore [label="Lorenzo Salvadore\nsalvadore@FreeBSD.org\n2023/03/20"] trhodes [label="Tom Rhodes\ntrhodes@FreeBSD.org\n2002/03/25"] +vladlen [label="Vladlen Popolitov\nvladlen@FreeBSD.org\n2025/09/09"] ygy [label="Guangyuan Yang\nygy@FreeBSD.org\n2017/09/18"] ziaee [label="Alexander Ziaee\nziaee@FreeBSD.org\n2024/12/30"] @@ -208,6 +209,7 @@ marck -> pluknet marck -> taras maxim -> taras +maxim -> vladlen mheinen -> jkois diff --git a/share/misc/committers-ports.dot b/share/misc/committers-ports.dot index fb6c168f1425..81870cf98af5 100644 --- a/share/misc/committers-ports.dot +++ b/share/misc/committers-ports.dot @@ -292,6 +292,7 @@ tagattie [label="Hiroki Tagato\ntagattie@FreeBSD.org\n2020/04/01"] tcberner [label="Tobias C. Berner\ntcberner@FreeBSD.org\n2016/07/06"] tdb [label="Tim Bishop\ntdb@FreeBSD.org\n2005/11/30"] thierry [label="Thierry Thomas\nthierry@FreeBSD.org\n2004/03/15"] +tiga [label="Tiago Gasiba\ntiga@FreeBSD.org\n2025/09/28"] tijl [label="Tijl Coosemans\ntijl@FreeBSD.org\n2013/03/27"] timur [label="Timur Bakeyev\ntimur@FreeBSD.org\n2007/06/07"] tobik [label="Tobias Kortkamp\ntobik@FreeBSD.org\n2017/02/08"] @@ -448,6 +449,7 @@ eadler -> tj eadler -> vg eduardo -> fuz +eduardo -> tiga edwin -> cperciva edwin -> erwin @@ -487,6 +489,7 @@ flo -> fuz flo -> jase flo -> jbeich flo -> grembo +flo -> tiga fluffy -> vishwin diff --git a/share/misc/committers-src.dot b/share/misc/committers-src.dot index 0f9f8242c5c2..3f3e39635c55 100644 --- a/share/misc/committers-src.dot +++ b/share/misc/committers-src.dot @@ -51,6 +51,7 @@ eik [label="Oliver Eikemeier\neik@FreeBSD.org\n2004/05/20\n2008/11/10"] furuta [label="Atsushi Furuta\nfuruta@FreeBSD.org\n2000/06/21\n2003/03/08"] gj [label="Gary L. Jennejohn\ngj@FreeBSD.org\n1994/??/??\n2006/04/28"] groudier [label="Gerard Roudier\ngroudier@FreeBSD.org\n1999/12/30\n2006/04/06"] +hselasky [label="Hans Petter Selasky\nhselasky@FreeBSD.org\n2023/06/23"] jake [label="Jake Burkholder\njake@FreeBSD.org\n2000/05/16\n2008/11/10"] jayanth [label="Jayanth Vijayaraghavan\njayanth@FreeBSD.org\n2000/05/08\n2008/11/10"] jb [label="John Birrell\njb@FreeBSD.org\n1997/03/27\n2009/12/15"] @@ -60,6 +61,7 @@ jkh [label="Jordan K. Hubbard\njkh@FreeBSD.org\n1993/06/12\n2008/06/13"] jlemon [label="Jonathan Lemon\njlemon@FreeBSD.org\n1997/08/14\n2008/11/10"] joe [label="Josef Karthauser\njoe@FreeBSD.org\n1999/10/22\n2008/08/10"] jtc [label="J.T. Conklin\njtc@FreeBSD.org\n1993/06/12\n????/??/??"] +karels [label="Mike Karels\nkarels@FreeBSD.org\n2016/06/09\n2024/06/02"] kargl [label="Steven G. Kargl\nkargl@FreeBSD.org\n2011/01/17\n2015/06/28"] kbyanc [label="Kelly Yancey\nkbyanc@FreeBSD.org\n2000/07/11\n2006/07/25"] keichii [label="Michael Wu\nkeichii@FreeBSD.org\n2001/03/07\n2006/04/28"] @@ -186,6 +188,7 @@ fjoe [label="Max Khon\nfjoe@FreeBSD.org\n2001/08/06"] flz [label="Florent Thoumie\nflz@FreeBSD.org\n2006/03/30"] freqlabs [label="Ryan Moeller\nfreqlabs@FreeBSD.org\n2020/02/10"] fsu [label="Fedor Uporov\nfsu@FreeBSD.org\n2017/08/28"] +fuz [label="Robert Clausecker\nfuz@FreeBSD.org\n2025/10/21"] gabor [label="Gabor Kovesdan\ngabor@FreeBSD.org\n2010/02/02"] gad [label="Garance A. Drosehn\ngad@FreeBSD.org\n2000/10/27"] gallatin [label="Andrew Gallatin\ngallatin@FreeBSD.org\n1999/01/15"] @@ -203,13 +206,13 @@ gshapiro [label="Gregory Shapiro\ngshapiro@FreeBSD.org\n2000/07/12"] harti [label="Hartmut Brandt\nharti@FreeBSD.org\n2003/01/29"] hiren [label="Hiren Panchasara\nhiren@FreeBSD.org\n2013/04/12"] hmp [label="Hiten Pandya\nhmp@FreeBSD.org\n2004/03/23"] -hselasky [label="Hans Petter Selasky\nhselasky@FreeBSD.org\n"] ian [label="Ian Lepore\nian@FreeBSD.org\n2013/01/07"] iedowse [label="Ian Dowse\niedowse@FreeBSD.org\n2000/12/01"] igoro [label="Igor Ostapenko\nigoro@FreeBSD.org\n2024/08/22"] imp [label="Warner Losh\nimp@FreeBSD.org\n1996/09/20"] ivoras [label="Ivan Voras\nivoras@FreeBSD.org\n2008/06/10"] ivy [label="Lexi Winter\nivy@FreeBSD.org\n2025/04/18"] +jaeyoon [label="Jaeyoon Choi\njaeyoon@FreeBSD.org\n2025/09/09"] jah [label="Jason A. Harmening\njah@FreeBSD.org\n2015/03/08"] jamie [label="Jamie Gritton\njamie@FreeBSD.org\n2009/01/28"] jasone [label="Jason Evans\njasone@FreeBSD.org\n1999/03/03"] @@ -245,7 +248,6 @@ jwd [label="John De Boskey\njwd@FreeBSD.org\n2000/05/19"] kaiw [label="Kai Wang\nkaiw@FreeBSD.org\n2007/09/26"] kaktus [label="Pawel Biernacki\nkaktus@FreeBSD.org\n2019/09/26"] kan [label="Alexander Kabaev\nkan@FreeBSD.org\n2002/07/21"] -karels [label="Mike Karels\nkarels@FreeBSD.org\n2016/06/09"] kbowling [label="Kevin Bowling\nkbowling@FreeBSD.org\n2024/10/15"] kd [label="Kornel Dulęba\nkd@FreeBSD.org\n2022/06/22"] ken [label="Ken Merry\nken@FreeBSD.org\n1998/09/08"] @@ -642,6 +644,7 @@ imp -> toshi imp -> tsoome imp -> uch imp -> vexeduxr +imp -> jaeyoon jake -> bms jake -> gordon @@ -787,6 +790,7 @@ markj -> bnovkov markj -> cem markj -> christos markj -> dougm +markj -> fuz markj -> igoro markj -> jfree markj -> lwhsu diff --git a/share/misc/pci_vendors b/share/misc/pci_vendors index 6dfe12dfc8ad..1b13509f002d 100644 --- a/share/misc/pci_vendors +++ b/share/misc/pci_vendors @@ -1,8 +1,8 @@ # # List of PCI ID's # -# Version: 2025.03.09 -# Date: 2025-03-09 03:15:02 +# Version: 2025.10.18 +# Date: 2025-10-18 03:15:01 # # Maintained by Albert Pool, Martin Mares, and other volunteers from # the PCI ID Project at https://pci-ids.ucw.cz/. @@ -114,6 +114,8 @@ 0b70 NVMe DC SSD [Yorktown controller] 2b59 NVMe DC SSD [Atomos Prime] 025e 0008 NVMe DC SSD U.2-SFF 15mm [D7-PS1010] + 025e 000c NVMe DC SSD E1.S 9.5mm [D7-PS1010] + 025e 000d NVMe DC SSD E1.S 15mm [D7-PS1010] 025e 0019 NVMe DC SSD E3.S-1T 7.5mm [D7-PS1010] 025e 0108 NVMe DC SSD U.2-SFF 15mm [D7-PS1030] 025e 0119 NVMe DC SSD E3.S-1T 7.5mm [D7-PS1030] @@ -154,6 +156,14 @@ 0202 GP202 0721 Sapphire, Inc. 0731 Jingjia Microelectronics Co Ltd + 1100 JM1100 + 0731 1101 JM1100-C + 0731 1102 JM1100-II + 0731 1103 JM1100-I + 0731 1104 JM1100-M + 0731 1105 JM1100-Y + 0731 1106 JM1100-EI + 0731 1107 JM1100-EM 7200 JM7200 Series GPU 0731 7201 JM7201 0731 7202 JM7202 @@ -191,6 +201,9 @@ 0731 930b JH930-M 0731 930c JH930 930b JH930-M + f011 JM1100-IV + f111 JM1100-MV + ff11 JM1100-YV 0777 Ubiquiti Networks, Inc. 0795 Wired Inc. 6663 Butane II (MPEG2 encoder board) @@ -642,7 +655,7 @@ 1bd4 000e 6G SAS2008IR 1bd4 000f 6G SAS2008IT SA5248 1bd4 0010 6G SAS2008IR SA5248 - 4c52 96c8 LRSA96C8 8-Port SATA3(6Gb/s)Exchange Adapter (with Raid) + 4c52 96c8 LRSA96C8 8-Port SATA3 (6Gb/s) Exchange Adapter (with RAID) 8086 350f RMS2LL040 RAID Controller 8086 3700 SSD 910 Series 0073 MegaRAID SAS 2008 [Falcon] @@ -775,6 +788,9 @@ 1000 30a0 SAS9300-8e 1000 30e0 SAS9300-8i 1000 3130 SAS 9300-16i + 1000 3170 SAS9302-16e +# IBM SAS3008 HBA controller + 1014 0457 9302-8i [N2215] 1028 1f45 HBA330 Adapter 1028 1f46 12Gbps HBA 1028 1f53 HBA330 Mini @@ -869,6 +885,9 @@ 1000 5030 eHBA 9700-16e 24G SAS/PCIe Storage Adapter 1028 22d2 PERC H975i Front 1028 22d3 PERC H975i Adapter + 1028 23cb PERC H975i Front + 1028 23cd PERC H975i Adapter + 1028 2446 PERC H976i Front 1d49 020b ThinkSystem 460-16e SAS/SATA PCIe Gen5 24Gb HBA 00b5 Fusion-MPT 24G SAS/PCIe SAS50xx/SAS51xx # 9760W 32 internal port RAID controller @@ -883,6 +902,11 @@ 1000 5021 eHBA 9700W-16i 24G SAS/PCIe Storage Adapter # 9700 16 external port Storage controller 1000 5030 eHBA 9700-16e 24G SAS/PCIe Storage Adapter + 1028 22d2 PERC H975i Front - Virtual + 1028 22d3 PERC H975i Adapter - Virtual + 1028 23cb PERC H975i Front - Virtual + 1028 23cd PERC H975i Adapter - Virtual + 1028 2446 PERC H976i Front - Virtual # Broadcom next-gen MPT PCIe switch 00b8 Fusion-MPT Switch SAS50xx/SAS51xx 00be SAS3504 Fusion-MPT Tri-Mode RAID On Chip (ROC) @@ -1293,12 +1317,12 @@ 15ff Fenghuang [Zhongshan Subor Z+] 1607 Arden 1636 Renoir [Radeon Vega Series / Radeon Vega Mobile Series] - 1637 Renoir Radeon High Definition Audio Controller + 1637 Renoir/Cezanne HDMI/DP Audio Controller 1638 Cezanne [Radeon Vega Series / Radeon Vega Mobile Series] 1043 16c2 Radeon Vega 8 # Used in the Steam Deck LCD 163f VanGogh [AMD Custom GPU 0405] - 1640 Rembrandt Radeon High Definition Audio Controller + 1640 Radeon High Definition Audio Controller [Rembrandt/Strix] 164c Lucienne 164d Rembrandt 164e Raphael @@ -1306,8 +1330,9 @@ 1681 Rembrandt [Radeon 680M] 1714 BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series] 103c 168b ProBook 4535s - 1900 Phoenix3 - 1901 Phoenix4 + 1900 HawkPoint1 + 1901 HawkPoint2 + 1902 Krackan2 3150 RV380/M24 [Mobility Radeon X600] 103c 0934 nx8220 3151 RV380 GL [FireMV 2400] @@ -3054,6 +3079,7 @@ 1458 22ed Radeon RX 560 148c 2381 Radeon RX 560 1682 9560 Radeon RX 560 + 1849 5037 PHANTOM G R RX550 2G/M/ASRK 1da2 e348 Radeon RX 560 1da2 e367 Radeon RX 550 640SP 6800 Wimbledon XT [Radeon HD 7970M] @@ -3284,6 +3310,7 @@ 1002 6b76 AMD Radeon RX Vega 56 8GB # ROG-STRIX-RXVEGA64-O8G-GAMING 1043 04c4 Radeon RX Vega 64 + 1043 0555 ROG STRIX RX Vega 56 8GB 1458 230c Radeon RX VEGA 56 GAMING OC 8G 1da2 e376 Radeon RX VEGA 56 Pulse 8GB OC HBM2 6880 Lexington [Radeon HD 6550M] @@ -3993,6 +4020,7 @@ 1da2 e410 Sapphire NITRO+ RX 5700 XT 1da2 e411 Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT]Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT] 7340 Navi 14 [Radeon RX 5500/5500M / Pro 5500M] + 106b 0210 Radeon Pro 5300M 7341 Navi 14 [Radeon Pro W5500] 7347 Navi 14 [Radeon Pro W5500M] 734f Navi 14 [Radeon Pro W5300M] @@ -4085,6 +4113,7 @@ 7461 Navi 32 [AMD Radeon PRO V710] 7470 Navi 32 [Radeon PRO W7700] 747e Navi 32 [Radeon RX 7700 XT / 7800 XT] + 148c 2427 RX 7800 XT [Hellhound / Red Devil] 7480 Navi 33 [Radeon RX 7600/7600 XT/7600M XT/7600S/7700S / PRO W7600] 1849 5313 RX 7600 Challenger OC 7481 Navi 33 [Radeon Graphics] @@ -4093,14 +4122,20 @@ 7489 Navi 33 [Radeon Pro W7500] 748b Navi 33 [Radeon Graphics] 7499 Navi 33 [Radeon RX 7400/7300/Pro W7400] + 749f Navi 33 [Radeon RX 7500] 74a0 Aqua Vanjaram [Instinct MI300A] 74a1 Aqua Vanjaram [Instinct MI300X] 74a2 Aqua Vanjaram [Instinct MI308X] 74a5 Aqua Vanjaram [Instinct MI325X] 74a9 Aqua Vanjaram [Instinct MI300X HF] 74b5 Aqua Vanjaram [Instinct MI300X VF] + 74b9 Aqua Vanjaram [Instinct MI325X VF] 74bd Aqua Vanjaram [Instinct MI300X HF] - 7550 Navi 48 [RX 9070/9070 XT] + 7550 Navi 48 [Radeon RX 9070/9070 XT/9070 GRE] + 148c 2435 Reaper Radeon RX 9070 XT 16GB GDDR6 (RX9070XT 16G-A) + 1da2 e490 Navi 48 XTX [Sapphire Pulse Radeon RX 9070 XT] + 7551 Navi 48 [Radeon AI PRO R9700] + 7590 Navi 44 [Radeon RX 9060 XT] 7833 RS350 Host Bridge 7834 RS350 [Radeon 9100 PRO/XT IGP] 7835 RS350M [Mobility Radeon 9000 IGP] @@ -4505,6 +4540,7 @@ ab28 Navi 21/23 HDMI/DP Audio Controller ab30 Navi 31 HDMI/DP Audio ab38 Navi 10 HDMI Audio + ab40 Navi 48 HDMI/DP Audio Controller ac00 Theater 506 World-Wide Analog Decoder ac01 Theater 506 World-Wide Analog Decoder ac02 TV Wonder HD 600 PCIe @@ -4948,6 +4984,7 @@ 1014 04fc PCIe3 x8 12Gb Quad SAS RAID+ Adapter(580A) 04ed Internal Shared Memory (ISM) virtual PCI device 0611 4769 Cryptographic Adapter + 06a2 4770 Cryptographic Adapter 06a7 Spyre Accelerator 06a8 Spyre Accelerator Virtual Function 3022 QLA3022 Network Adapter @@ -5295,6 +5332,8 @@ 1514 Family 14h Processor Root Port 1515 Family 14h Processor Root Port 1516 Family 14h Processor Root Port + 151c USB4 Router 0 + 151d USB4 Router 1 1530 Family 16h Processor Function 0 1531 Family 16h Processor Function 1 1532 Family 16h Processor Function 2 @@ -5364,6 +5403,12 @@ 1583 Family 16h (Models 30h-3fh) Processor Function 3 1584 Family 16h (Models 30h-3fh) Processor Function 4 1585 Family 16h (Models 30h-3fh) Processor Function 5 + 1587 Strix Halo USB 3.1 xHCI + 1588 Strix Halo USB 3.1 xHCI + 1589 Strix Halo USB 3.1 xHCI + 158b Strix Halo USB 3.1 xHCI + 158d Strix Halo USB4 Host Router + 158e Strix Halo USB4 Host Router 1590 Amur/Nolan HT Configuration 1591 Amur/Nolan Address Maps 1592 Amur/Nolan DRAM Configuration @@ -5410,7 +5455,7 @@ 15dc Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus B ea50 ce19 mCOM10-L1900 15de Raven/Raven2/FireFlight HD Audio Controller - 15df Family 17h (Models 10h-1fh) Platform Security Processor + 15df Raven/Raven2/FireFlight/Renoir/Cezanne Platform Security Processor 1043 876b PRIME Motherboard 17aa 5124 ThinkPad E595 ea50 ce19 mCOM10-L1900 @@ -5424,7 +5469,7 @@ 1043 876b PRIME Motherboard 17aa 5124 ThinkPad E595 ea50 ce19 mCOM10-L1900 - 15e2 ACP/ACP3X/ACP6x Audio Coprocessor + 15e2 Audio Coprocessor 17aa 5124 ThinkPad E595 ea50 ce19 mCOM10-L1900 15e3 Family 17h/19h/1ah HD Audio Controller @@ -5653,9 +5698,11 @@ 43c8 400 Series Chipset SATA Controller 43d5 400 Series Chipset USB 3.1 xHCI Compliant Host Controller 43e9 500 Series Chipset Switch Upstream Port + 43ea 500 Series Chipset Switch Downstream Port 43eb 500 Series Chipset SATA Controller # or ASM106X Serial ATA Controller 1b21 1062 ASM1062 Serial ATA Controller + 43ec A520 Series Chipset USB 3.1 XHCI Controller 43ee 500 Series Chipset USB 3.1 XHCI Controller # maybe 1b21 1142 ASM1042A USB 3.0 Host Controller @@ -5663,6 +5710,7 @@ 43f5 600 Series Chipset PCIe Switch Downstream Port 43f6 600 Series Chipset SATA Controller 43f7 600 Series Chipset USB 3.2 Controller + 43fc 800 Series Chipset USB 3.x XHCI Controller 43fd 800 Series Chipset USB 3.x XHCI Controller 57a3 Matisse PCIe GPP Bridge 57a4 Matisse PCIe GPP Bridge @@ -5998,6 +6046,7 @@ 1028 1f24 PERC S300 Controller # NV-RAM Adapter used in Dell DR appliances 0073 NV-RAM Adapter + 0c46 PERC S160 RAID controller 1028 PCIe Bridge riser 2600 ENT NVMe RT1 1028 215e ENT NVMe RT1 RI 3.84TB @@ -7225,6 +7274,7 @@ 8004 DTL-H2500 [Playstation development board] 8009 CXD1947Q i.LINK Controller 800c DTL-H800 [PS1 sound development board] + 800d DVBK-2000(E) DV Still Image Capture Board 8039 CXD3222 i.LINK Controller 8047 PS2 TOOL MRP 8056 Rockwell HCF 56K modem @@ -7796,6 +7846,7 @@ 103c 1939 QMH2672 16Gb Dual Port Fibre Channel Adapter 103c 8002 3830C 16G Fibre Channel Host Bus Adapter 1077 0241 QLE2670 16Gb Single Port Fibre Channel Adapter + 1077 0249 QLE2672 16Gb Dual Port Fibre Channel Adapter 2071 ISP2714-based 16/32Gb Fibre Channel to PCIe Adapter 1077 0283 QLE2764 Quad Port 32Gb Fibre Channel to PCIe Adapter 1077 029e QLE2694 Quad Port 16Gb Fibre Channel to PCIe Adapter @@ -7864,6 +7915,8 @@ 1077 0167 QME2572 Dual Port FC8 HBA Mezzanine 1590 00fc StoreFabric 84Q 8Gb Quad Port Fibre Channel Host Bus Adapter 2971 ISP2684 + 2981 32G SFP28 EP2744 Apatter + 1bd4 00b0 32G SFP28 EP2744 Apatter 3022 ISP4022-based Ethernet NIC 3032 ISP4032-based Ethernet IPv6 NIC 4010 ISP4010-based iSCSI TOE HBA @@ -9404,13 +9457,16 @@ 8664 PEX 8664 64-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch 8680 PEX 8680 80-lane, 20-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch 8696 PEX 8696 96-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch + 8714 PEX 8714 12-Lane, 5-Port PCI Express Gen 3 (8 GT/s) Switch 8717 PEX 8717 16-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch with DMA 8718 PEX 8718 16-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch + 8723 PEX 8723 24-Lane, 6-Port PCI Express Gen 3 (8 GT/s) Switch 8724 PEX 8724 24-Lane, 6-Port PCI Express Gen 3 (8 GT/s) Switch, 19 x 19mm FCBGA 4c52 9234 LRNV9324 2-port Built-in 8643 NVMe Exchange Adapter 4c52 9524 LRNV9524 2-port M.2 NVMe SSD Exchange Adapter 8725 PEX 8725 24-Lane, 10-Port PCI Express Gen 3 (8.0 GT/s) Multi-Root Switch with DMA 8732 PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch + 8733 PEX 8733 32-Lane, 19-Port PCI Express Gen 3 (8 GT/s) Switch 8734 PEX 8734 32-lane, 8-Port PCI Express Gen 3 (8.0GT/s) Switch 8747 PEX 8747 48-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch 4c52 9347 LRNV9347L 2-port Built-in 8643 NVMe Switching Adapter @@ -9418,6 +9474,9 @@ 8748 PEX 8748 48-Lane, 12-Port PCI Express Gen 3 (8 GT/s) Switch, 27 x 27mm FCBGA 8749 PEX 8749 48-Lane, 18-Port PCI Express Gen 3 (8.0 GT/s) Multi-Root Switch with DMA 4c52 9349 LRNV9349 8-port SFF-8643 NVMe SSD Exchange Adapter + 8764 PEX 8764 64-Lane, 16-Port PCI Express Gen 3 (8 GT/s) Switch + 8780 PEX 8780 80-Lane, 20-Port PCI Express Gen 3 (8 GT/s) Switch + 8796 PEX8796 96-Lane, 24-Port PCIe Gen 3 (8.0 GT/s) Switch 87a0 PEX PCI Express Switch NT0 Port Link Interface 87a1 PEX PCI Express Switch NT1 Port Link Interface 87b0 PEX PCI Express Switch NT0 Port Virtual Interface @@ -9576,11 +9635,15 @@ 1517 000f ECDR-GC314-PMC Receiver 1885 0700 Tsunami FPGA PMC with Altera Stratix S40 1885 0701 Tsunami FPGA PMC with Altera Stratix S30 + 9712 PEX9712 12-Lane, 5-Port PCIe Gen 3 (8.0 GT/s) ExpressFabric Switch 9733 PEX 9733 33-lane, 9-port PCI Express Gen 3 (8.0 GT/s) Switch 1d49 0001 ThinkSystem 1610-4P NVMe Switch Adapter 1d49 0002 ThinkSystem 810-4P NVMe Switch Adapter 9749 PEX 9749 49-lane, 13-port PCI Express Gen 3 (8.0 GT/s) Switch 1d49 0004 ThinkSystem 1610-8P NVMe Switch Adapter + 9765 PEX9765 65-Lane, 17-Port PCIe Gen 3 (8.0 GT/s) ExpressFabric Switch + 9781 PEX9781 81-Lane, 21-Port PCIe Gen 3 (8.0 GT/s) ExpressFabric Switch + 9797 PEX9781 97-Lane, 25-Port PCIe Gen 3 (8.0 GT/s) ExpressFabric Switch a100 Blackmagic Design DeckLink bb04 B&B 3PCIOSD1A Isolated PCI Serial c001 CronyxOmega-PCI (8-port RS232) @@ -11982,6 +12045,8 @@ 0fa0 GK11x [GK11x_FPGA] 0fa5 GK11x 0fa7 GK11x [Tegra on x86 (PEATRANS)] + 0fae Tegra X1 PCIe x4 Root Complex + 0faf Tegra X1 PCIe x1 Root Complex 0fb0 GM200 High Definition Audio 0fb8 GP108 High Definition Audio Controller 0fb9 GP107GL High Definition Audio Controller @@ -12178,6 +12243,8 @@ 10c3 GT218 [GeForce 8400 GS Rev. 3] 10c5 GT218 [GeForce 405] 10d8 GT218 [NVS 300] + 10e5 Parker PCIe x4 Root Complex + 10e6 Parker PCIe x1 Root Complex 10ef GP102 HDMI Audio Controller 10f0 GP104 High Definition Audio Controller 10f1 GP106 High Definition Audio Controller @@ -12860,7 +12927,7 @@ 1aed TU116 USB Type-C UCSI Controller 1aef GA102 High Definition Audio Controller 1af1 GA100 [A100 NVSwitch] - 1b00 GP102 [TITAN X] + 1b00 GP102 [TITAN X Pascal] 1b01 GP102 [GeForce GTX 1080 Ti 10GB] 1b02 GP102 [TITAN Xp] 1b04 GP102 @@ -13184,11 +13251,16 @@ 228e GA106 High Definition Audio Controller 2291 GA107 High Definition Audio Controller 2296 Tegra PCIe Endpoint Virtual Network + 229a Orin PCIe x8 Root Complex + 229c Orin PCIe x4/x8 Endpoint/Root Complex + 229e Orin PCIe x1 Root Complex 22a3 GH100 [H100 NVSwitch] 22ba AD102 High Definition Audio Controller 22bc AD104 High Definition Audio Controller 22bd AD106M High Definition Audio Controller 22be AD107 High Definition Audio Controller + 22d8 THOR Processor PCI Express Root Port + 22e6 THOR Processor PCI Express x16 Controller 2302 GH100 230e GH100 [H20 NVL16] 2313 GH100 [H100 CNX] @@ -13376,31 +13448,53 @@ 28f8 AD107GLM [RTX 2000 Ada Generation Embedded GPU] 2900 GB100 [Reserved Dev ID A] 2901 GB100 [B200] - 2920 GB100 [TS4] + 2920 GB100 [TS4 / B100] + 2924 GB100 + 2925 GB100 + 293d GB100 2940 GB100 [Reserved Dev ID B] 2941 GB100 [HGX GB200] + 297e GB100 2980 GB102 [Reserved Dev ID A] 29bc GB102 [B100] 29c0 GB102 [Reserved Dev ID B] + 29f1 GB102 + 2b00 TA1090SA [THOR] 2b85 GB202 [GeForce RTX 5090] 2b87 GB202 [GeForce RTX 5090 D] + 2bb1 GB202GL [RTX PRO 6000 Blackwell Workstation Edition] + 2bb3 GB202GL [RTX PRO 5000 Blackwell] + 2bb4 GB202GL [RTX PRO 6000 Blackwell Max-Q Workstation Edition] + 2bb5 GB202GL [RTX PRO 6000 Blackwell Server Edition] 2c02 GB203 [GeForce RTX 5080] 2c05 GB203 [GeForce RTX 5070 Ti] 2c18 GB203M / GN22 [GeForce RTX 5090 Max-Q / Mobile] 2c19 GB203M / GN22 [GeForce RTX 5080 Max-Q / Mobile] 2c2c GB6-256(N22W-ES-A1) + 2c31 GB203GL [RTX PRO 4500 Blackwell] + 2c34 GB203GL [RTX PRO 4000 Blackwell] + 2c38 GB203GLM [RTX PRO 5000 Blackwell Generation Laptop GPU] + 2c39 GB203GLM [RTX PRO 4000 Blackwell Generation Laptop GPU] 2c58 GB203M / GN22-X11 [GeForce RTX 5090 Max-Q / Mobile] 2c59 GB203M / GN22-X9 [GeForce RTX 5080 Max-Q / Mobile] - 2d18 AD108M [GeForce RTX 5070 Max-Q / Mobile] - 2d19 AD108M [GeForce RTX 5060 Max-Q / Mobile] + 2d04 GB206 [GeForce RTX 5060 Ti] + 2d05 GB206 [GeForce RTX 5060] + 2d18 GB206M [GeForce RTX 5070 Max-Q / Mobile] + 2d19 GB206M [GeForce RTX 5060 Max-Q / Mobile] 2d2c GB6-128 (N22Y-ES-A1) - 2d58 AD108M [GeForce RTX 5070 Max-Q / Mobile] - 2d59 AD108M [GeForce RTX 5060 Max-Q / Mobile] - 2d98 AD108M [GeForce RTX 5050 Max-Q / Mobile] - 2dd8 AD108M [GeForce RTX 5050 Max-Q / Mobile] - 2f04 GN22 [GeForce RTX 5070] - 2f18 AD108M [GeForce RTX 5070 Ti Max-Q / Mobile] - 2f58 AD108M [GeForce RTX 5070 Ti Max-Q / Mobile] + 2d39 GB206GLM [RTX PRO 2000 Blackwell Generation Laptop GPU] + 2d58 GB206M [GeForce RTX 5070 Max-Q / Mobile] + 2d59 GB206M [GeForce RTX 5060 Max-Q / Mobile] + 2d83 GB207 [GeForce RTX 5050] + 2d98 GB207M [GeForce RTX 5050 Max-Q / Mobile] + 2db8 GB207GLM [RTX PRO 1000 Blackwell Generation Laptop GPU] + 2db9 GB207GLM [RTX PRO 500 Blackwell Generation Laptop GPU] + 2dd8 GB207M [GeForce RTX 5050 Max-Q / Mobile] + 2e2a GB20B + 2f04 GB205 [GeForce RTX 5070] + 2f18 GB205M [GeForce RTX 5070 Ti Mobile] + 2f38 GB205GLM [RTX PRO 3000 Blackwell Generation Laptop GPU] + 2f58 GB205M [GeForce RTX 5070 Ti Mobile] 31c0 GB110 3340 GB120 10df Emulex Corporation @@ -13554,6 +13648,7 @@ 0860 CA91C860 [QSpan] 0862 CA91C862A [QSpan-II] 8111 Tsi381 PCIe to PCI Bridge + 8113 89HPEB383 PCIe-to-PCI Bridge 8260 CA91L8200B [Dual PCI PowerSpan II] 8261 CA91L8260B [Single PCI PowerSpan II] a108 Tsi109 Host Bridge for Dual PowerPC @@ -13623,6 +13718,7 @@ 5227 RTS5227 PCI Express Card Reader 17aa 220e ThinkPad T440p 17aa 2214 ThinkPad X240 + 5228 RTS5288 PCIe SD UHS-I Card Reader controller 5229 RTS5229 PCI Express Card Reader 1025 0813 Aspire R7-571 103c 194e ProBook 455 G1 Notebook @@ -13646,7 +13742,8 @@ 1028 0c06 Precision 3580 17aa 224f ThinkPad X1 Carbon 5th Gen 5260 RTS5260 PCI Express Card Reader - 5261 RTS5261 PCI Express Card Reader + 5261 RTS5261 PCIe SD Express Card Reader controller + 5264 RTS5264 PCIe SD UHS-II & SD Express Card Reader controller 5286 RTS5286 PCI Express Card Reader 5287 RTL8411B PCI Express Card Reader 1025 1094 Acer Aspire E5-575G @@ -13658,6 +13755,7 @@ 5763 RTS5763DL NVMe SSD Controller (DRAM-less) 5765 RTS5765DL NVMe SSD Controller (DRAM-less) 5770 RTS5770DL NVMe SSD Controller (DRAM-less) + 5771 RTS5771 NVMe SSD Controller (DRAM-less) 5772 RTS5772DL NVMe SSD Controller (DRAM-less) 8029 RTL-8029(AS) 10b8 2011 EZ-Card (SMC1208) @@ -13856,6 +13954,7 @@ 103c 831b Realtek RTL8822BE 802.11ac 2x2 Wi-Fi + Bluetooth 4.2 Combo Adapter (MU-MIMO supported) 17aa 5124 ThinkPad E595 17aa b023 ThinkPad E595 + b851 RTL8851BE PCIe 802.11ax Wireless Network Controller b852 RTL8852BE PCIe 802.11ax Wireless Network Controller b85b RTL8852BE PCIe 802.11ax Wireless Network Controller [1T1R] c821 RTL8821CE 802.11ac PCIe Wireless Network Adapter @@ -14078,6 +14177,8 @@ 000b EMU20k2 [Sound Blaster X-Fi Titanium Series] 1102 0041 SB0880 [SoundBlaster X-Fi Titanium PCI-e] 1102 0062 SB1270 [SoundBlaster X-Fi Titanium HD] + 0010 CA0132 Sound Core3D [Sound Blaster AE-7] + 1102 0081 Sound Blaster AE-7 0012 CA0132 Sound Core3D [Sound Blaster Recon3D / Z-Series / Sound BlasterX AE-5 Plus] 1102 0010 SB1570 SB Audigy Fx 1102 0191 CA0132 Sound Core3D - CA0113 [ Sound BlasterX AE-5 Plus] @@ -14252,7 +14353,7 @@ 0585 VT82C585VP [Apollo VP1/VPX] 0586 VT82C586/A/B PCI-to-ISA [Apollo VP] 1106 0000 MVP3 ISA Bridge - 0591 VT8237A SATA 2-Port Controller + 0591 VT8237A Integrated SATA RAID Controller 0595 VT82C595 [Apollo VP2] 0596 VT82C596 ISA [Mobile South] 1106 0000 VT82C596/A/B PCI to ISA Bridge @@ -14610,6 +14711,7 @@ 3372 VT8237S PCI to ISA Bridge 337a VT8237A PCI to PCI Bridge 337b VT8237A Host Bridge + 3401 VT6325 Firewire Controller 3402 VT8261 PCI to ISA Bridge 3403 VT6315 Series Firewire Controller 1043 8374 M5A88-V EVO @@ -14622,7 +14724,11 @@ 3456 VX11 Standard Host Bridge 345b VX11 Miscellaneous Bus 3483 VL805/806 xHCI USB 3.0 Controller + 365a VT3365 Card Reader Host Controller + 365b VT3365 SDIO Host Controller 3a01 VX11 Graphics [Chrome 645/640] + 401a VT6325 Card Reader Host Controller + 401b VT6325 SDIO PCI-E Host Controller 4149 VIA VT6420 (ATA133) Controller 4204 K8M800 Host Bridge 4208 PT890 Host Bridge @@ -14657,17 +14763,18 @@ 5324 CX700M2/VX700/VX800/820-Series Serial ATA & EIDE-Controller 5327 P4M890 I/O APIC Interrupt Controller 5336 K8M890CE I/O APIC Interrupt Controller + 5337 VT8237A Integrated SATA Controller 5340 PT900 I/O APIC Interrupt Controller 5351 VT3351 I/O APIC Interrupt Controller 5353 VX800/VX820 APIC and Central Traffic Control 5364 CN896/VN896/P4M900 I/O APIC Interrupt Controller - 5372 VT8237/8251 Serial ATA Controller + 5372 VT8237S SATA Controller 5409 VX855/VX875 APIC and Central Traffic Control 5410 VX900 Series APIC and Central Traffic Control 5419 VN1000 I/O APIC Interrupt Controller 6100 VT85C100A [Rhine II] 6122 VN1000 Graphics [Chrome 520 IGP] - 6287 SATA RAID Controller + 6287 VT8251 AHCI SATA Controller 6290 K8M890CE Host Bridge 6327 P4M890 Security Device 6353 VX800/VX820 Scratch Registers @@ -14699,6 +14806,7 @@ 7351 VT3351 Host Bridge 7353 VX800/VX820 North-South Module Interface Control 7364 CN896/VN896/P4M900 Host Bridge + 7372 VT8237S SATA RAID Controller 7409 VX855/VX875 North-South Module Interface Control 7410 VX900 Series North-South Module Interface Control 19da a179 ZBOX nano VD01 @@ -14730,8 +14838,10 @@ 9000 VT8261 IDE Controller [StorX IDE Controller - 9000] 9001 VX900 Series Serial-ATA Controller 9040 VT8261 SATA Controller [StorX RAID Controller - 9040] + 9041 VX900/VX11 SATA Controller [StorX RAID Controller - 9041] 9082 Standard AHCI 1.0 SATA Controller - 9140 HDMI Audio Device + 9140 VX11 Graphics [Chrome 645/640] HDMI Audio Device + 9170 VX900 Graphics [Chrome9 HD] HDMI Audio Device 9201 USB3.0 Controller 9380 Ncore Coprocessor for Centaur CNS 9530 VX800/820/900/VT8261 Series Secure Digital Memory Card Controller @@ -15943,6 +16053,7 @@ 0115 XG4 NVMe SSD Controller 0116 XG5 NVMe SSD Controller 1179 0001 XG5 NVMe SSD Controller + 0119 XD5 NVMe SSD Controller 011a XG6 NVMe SSD Controller 0404 DVD Decoder card 0406 Tecra Video Capture device @@ -16144,7 +16255,7 @@ 103c 30cc Pavilion dv6700 103c 30cf Pavilion dv9668eg Laptop 17aa 20c5 ThinkPad R61 - 17aa 20c7 ThinkPad R61 + 17aa 20c7 ThinkPad R61/T400 0841 R5C841 CardBus/SD/SDIO/MMC/MS/MSPro/xD/IEEE1394 0843 R5C843 MMC Host Controller 1025 0121 Aspire 5920G @@ -16592,6 +16703,8 @@ 11bc Network Peripherals Inc 0001 NP-PCI 11bd Pinnacle Systems Inc. + 0015 FireWire Controller + 0023 Studio 700 002e PCTV 40i 0040 Royal TS Function 1 11bd 0044 PCTV 2000i Dual DVB-T Pro PCI Tuner 1 @@ -16893,6 +17006,10 @@ 11f7 Scientific Atlanta # née PMC-Sierra Inc. 11f8 Microchip Technology + 4036 PM40036 Switchtec PFX 36xG4 Fanout PCIe Switch + 4052 PM40052 Switchtec PFX 52xG4 Fanout PCIe Switch + 4084 PM40084 Switchtec PFX 84xG4 Fanout PCIe Switch + 4128 PM41028 Switchtec PSX 28xG4 Programmable PCIe Switch 5000 PM50100 Switchtec PFX 100xG5 Fanout PCIe Switch 5028 PM50028 Switchtec PFX 28xG5 Fanout PCIe Switch 5036 PM50036 Switchtec PFX 36xG5 Fanout PCIe Switch @@ -17220,6 +17337,8 @@ 1233 Bus-Tech, Inc. # nee Risq Modular Systems, Inc. 1235 SMART Modular Technologies + c241 CXA-4F1W + 1028 2382 4-DIMM Add In Card 1236 Sigma Designs Corporation 0000 RealMagic64/GX 6401 REALmagic 64/GX (SD 6425) @@ -17476,6 +17595,7 @@ 2261 SM2261XT x2 NVMe SSD Controller (DRAM-less) 2262 SM2262/SM2262EN SSD Controller 2263 SM2263EN/SM2263XT (DRAM-less) NVMe SSD Controllers + 2268 SM2268XT (DRAM-less) NVMe SSD Controller 2269 SM2269XT (DRAM-less) NVMe SSD Controller 8366 SM8366 NVMe SSD Controller [MonTitan] 1270 Olympus Optical Co., Ltd. @@ -18454,6 +18574,7 @@ 5416 2550 NVMe SSD (DRAM-less) 5425 2500 NVMe SSD (DRAM-less) 5427 2650 NVMe SSD (DRAM-less) + 5428 4600 NVMe SSD 5429 2600 NVMe SSD (DRAM-less) 6001 2100AI NVMe SSD [Nitro] 1345 Arescom Inc @@ -18528,6 +18649,8 @@ 0b22 UP-200 Powered 2 port RS-232 card 0b23 UP-200 Powered 2 port RS-232 card 0ba1 UC-101 1 + 1 port RS-232 card + 0ba2 UC-101 1 + 1 port RS-232 card + 0ba3 UC-101 1 + 1 port RS-232 card 0bc1 UC-203 1 + 1 port RS-232 + LPT card 0bc2 UC-203 1 + 1 port RS-232 + LPT card 0be1 UC-146 LPT card @@ -18539,6 +18662,8 @@ 0c22 UP-880 Powered 2 port RS-232 card 0c23 UP-880 Powered 2 port RS-232 card 0c41 UC-368 4 port RS-422/485 Opto Isolated card + 0c42 UC-368 4 port RS-422/485 Opto Isolated card + 0c43 UC-368 4 port RS-422/485 Opto Isolated card 0ca1 UC-253 2 port RS-232 card 0d21 UC-260 4 port RS-232 card 0d41 UC-836 4 port RS-232 card @@ -18578,6 +18703,10 @@ 401d PX-475 1 port RS-232 + LPT card (Serial port) 401e PX-803 Powered 1 + 1 port RS-232 card 401f PX-475 1 port RS-232 + LPT card (LPT port) + 4020 XC-157 LPT ExpressCard + 4021 XC-475 1 port RS-232 + LPT ExpressCard (Serial port) + 4022 XC-475 1 port RS-232 + LPT ExpressCard (LPT port) + 4026 XC-235 1 port RS-232 ExpressCard 4027 IX-100 1 port RS-232 card 4028 IX-200 2 port RS-232 card 4029 IX-400 4 port RS-232 card @@ -20294,6 +20423,8 @@ a80d NVMe SSD Controller PM9C1a (DRAM-less) a80e NVMe SSD Controller PM9D3a a80f BM9C1 QLC NVME SSD (DRAM-less) + a810 NVMe SSD 9100 PRO [PM9E1] + a811 BM9H1 NVME SSD (DRAM-less) a820 NVMe SSD Controller 171X 1028 1f95 Express Flash NVMe XS1715 SSD 400GB 1028 1f96 Express Flash NVMe XS1715 SSD 800GB @@ -20469,6 +20600,7 @@ 1458 Gigabyte Technology Co., Ltd 1002 Aourus Radeon RX6900XT Xtreme Waterforce WB 16G 22e8 Ellesmere [Radeon RX 480] + 2425 Radeon RX 9070 GAMING OC 16G 3483 USB 3.0 Controller (VIA VL80x-based xHCI Controller) 1459 DOOIN Electronics 145a Escalate Networks Inc @@ -20657,6 +20789,7 @@ 14c3 MEDIATEK Corp. 0608 MT7921K (RZ608) Wi-Fi 6E 80MHz 0616 MT7922 802.11ax PCI Express Wireless Network Adapter + 0717 MT7925 (RZ717) Wi-Fi 7 160MHz 4d75 T700 5G Modem [5G Solution 5000] 7603 MT7603E 802.11bgn PCI Express Wireless Network Adapter 7612 MT7612E 802.11acbgn PCI Express Wireless Network Adapter @@ -22155,6 +22288,7 @@ 9300 Universal Exhaust Gas Oxygen Sensor Simulator 9310 Digital Programmable Resistor 9320 Arria 10 FPGA Card + 9330 Cyclone V FPGA Card 9350 Analog Input Card 1543 SILICON Laboratories 3052 Intel 537 [Winmodem] @@ -22417,6 +22551,15 @@ 0290 SagittaZ 0292 Arcus3 Flash Recovery 0293 Arcus3 RMA + 0294 Ophy 2.1 (SagittaZ) +# Sagitta + 0296 OPHY2.6 +# Sagitta + 0298 OPHY3.0 +# Sagitta + 029a OPHY3.1 +# Sagitta + 029c OPHY3.5 02a0 Quantum-6 in Flash Recovery Mode 02a1 Quantum-6 RMA 02a2 Spectrum-7 in Flash Recovery Mode @@ -22503,6 +22646,7 @@ # NIC-ETH540F-3S-2P OCP3.0 2x10G Card 193d 1084 NIC-ETH540F-3S-2P 1e81 0c10 25GbE dual-port SFP28, PCIe3.0 x8 [3SC10] + 1f3f 0c10 25GbE dual-port SFP28, PCIe3.0 x8, 3SC10 1016 MT27710 Family [ConnectX-4 Lx Virtual Function] 1017 MT27800 Family [ConnectX-5] 117c 00b1 FastFrame N311 Single-port 10Gb Ethernet Adapter @@ -22529,6 +22673,7 @@ 193d 1035 NIC-ETH641F-LP-2P SFP28 2x25GbE PCIe Network Adapter 1bd4 00ac O252MCX6Lx 1bd4 00ae S252MCX6Lx + 1f3f 0c11 25GbE dual-port SFP28, PCIe4.0 x8, 3SC1125GbE dual-port SFP28, PCIe4.0 x8, 3SC11 1ff9 00ad ENFM6251-SP2 1ff9 00af ENPM6251-SP2 1020 MT28860 @@ -22688,7 +22833,7 @@ 5014 WD PC SN540 / Green SN350 NVMe SSD 1 TB (DRAM-less) 5015 PC SN740 NVMe SSD (DRAM-less) 5016 WD PC SN740 NVMe SSD 512GB (DRAM-less) - 5017 WD Black SN770 / PC SN740 256GB / PC SN560 (DRAM-less) NVMe SSD + 5017 WD SN560/SN740/SN770/SN5000 NVMe SSD 5019 WD Green SN350 240GB (DRAM-less) / SN560E NVMe SSD 501a SanDisk Ultra 3D / WD Blue SN570 NVMe SSD (DRAM-less) 501d WD Blue SN550 NVMe SSD 2TB (DRAM-less) @@ -22699,12 +22844,16 @@ 5028 WD CH SN560 NVMe SSD 5030 WD Black SN850X NVMe SSD 5034 WD PC SN5000S M.2 2230 NVMe SSD (DRAM-less) + 5035 WD PC SN5000S M.2 2242 NVMe SSD (DRAM-less) 5036 WD PC SN5000S M.2 2280 NVMe SSD (DRAM-less) 5041 WD Blue SN580 NVMe SSD (DRAM-less) 5042 WD Black SN770M NVMe SSD (DRAM-less) + 5044 WD PC SN7100S NVMe SSD (DRAM-less) 5045 WD_BLACK SN7100 NVMe SSD (DRAM-less) 5046 SanDisk Extreme NVMe SSD (DRAM-less) 5049 SN8000S NVMe SSD + 504a WD Blue SN5000 NVMe SSD (DRAM-less) + 5050 WD PC SN8050S / WD_BLACK SN8100 NVMe SSD 15b8 ADDI-DATA GmbH 1001 APCI1516 SP controller (16 digi outputs) 1003 APCI1032 SP controller (32 digi inputs w/ opto coupler) @@ -23843,6 +23992,8 @@ 010c SM8350 PCIe Root Complex [Snapdragon 888] 010e SC8280XP PCI Express Root Port 0110 SM8475 PCIe Root Complex [Snapdragon 8+ Gen 1] + 0111 SC8380XP PCIe Root Complex [Snapdragon X / X Plus / X Elite] + 0113 SM8550/SM8650 PCIe Root Complex [Snapdragon 8 Gen 2/Gen 3] 0300 MDM9x35 LTE Modem [Snapdragon X7] 0301 MDM9x45 LTE Modem [Snapdragon X12] 0302 MDM9x55 LTE Modem [Snapdragon X16] @@ -23851,6 +24002,7 @@ 0400 Datacenter Technologies QDF2432 PCI Express Root Port 0401 Datacenter Technologies QDF2400 PCI Express Root Port 1000 QCS405 PCIe Root Complex + 1003 IPQ6018 PCIe Root Complex 1101 QCA6390 Wireless Network Adapter 1103 QCNFA765 Wireless Network Adapter 1104 QCN6024/9024/9074 Wireless Network Adapter @@ -24714,6 +24866,14 @@ 0441 T4240 without security 0446 T4160 with security 0447 T4160 without security + 0820 T1040 with security + 0821 T1040 without security + 0824 T1042 with security + 0825 T1042 without security + 0828 T1020 with security + 0829 T1020 without security + 082c T1022 with security + 082d T1022 without security 0830 T2080 with security 0831 T2080 without security 0838 T2081 with security @@ -24851,15 +25011,18 @@ 5016 E16 PCIe4 NVMe Controller 5018 E18 PCIe4 NVMe Controller 5019 PS5019-E19 PCIe4 NVMe Controller (DRAM-less) + 5020 PS5020-E20 (X1) PCIe4 NVMe Controller 5021 PS5021-E21 PCIe4 NVMe Controller (DRAM-less) 5026 PS5026-E26 PCIe5 NVMe Controller 5027 PS5027-E27T PCIe4 NVMe Controller (DRAM-less) 5031 PS5031-E31T PCIe5 NVMe Controller + 5302 PS5302-X2 PCIe5 NVMe Controller 1989 Montilio Inc. 0001 RapidFile Bridge 8001 RapidFile 198a Nallatech Ltd. 1993 Innominate Security Technologies AG +1998 Toyou Feiji Electronics Co., Ltd. 1999 A-Logics a900 AM-7209 Video Processor 199a Pulse-LINK, Inc. @@ -25015,6 +25178,8 @@ a126 HiSilicon SDI NVMe Storage Controller a127 HiSilicon SDI Accelerator a12a HiSilicon Add-on PCI-PCI Bridge + a12d HiSilicon Embedded PMU + a12e HiSilicon Embedded PCIe PTT a220 HNS GE Network Controller a221 HNS GE/10GE/25GE Network Controller 19e5 0454 TM280 @@ -25102,6 +25267,12 @@ 1a3b AzureWave 1112 AR9285 Wireless Network Adapter (PCI-Express) 1a3e Micro-Research Finland Oy + 132c MTCA Event Receiver 300 + 152c CompactPCI Event Receiver 300 + 172c PCI Express Event Receiver 300 + 192c CompactPCI Event Receiver TG 300 + 232c MTCA Event Master 300 + 252c CompactPCI Event Generator 300 1a41 Tilera Corp. 0001 TILE64 processor 0002 TILEPro processor @@ -25323,19 +25494,83 @@ 1005 Virtio RNG 1009 Virtio filesystem 1041 Virtio 1.0 network device + 1af4 1100 QEMU 1042 Virtio 1.0 block device + 1af4 1100 QEMU 1043 Virtio 1.0 console + 1af4 1100 QEMU 1044 Virtio 1.0 RNG - 1045 Virtio 1.0 memory balloon + 1af4 1100 QEMU + 1045 Virtio 1.0 balloon + 1af4 1100 QEMU + 1046 Virtio 1.0 ioMemory + 1af4 1100 QEMU + 1047 Virtio 1.0 remote processor messaging + 1af4 1100 QEMU 1048 Virtio 1.0 SCSI - 1049 Virtio 1.0 filesystem + 1af4 1100 QEMU + 1049 Virtio 9P transport + 1af4 1100 QEMU + 104a Virtio 1.0 WLAN MAC + 1af4 1100 QEMU + 104b Virtio 1.0 remoteproc serial link + 1af4 1100 QEMU + 104d Virtio 1.0 memory balloon + 1af4 1100 QEMU 1050 Virtio 1.0 GPU + 1af4 1100 QEMU + 1051 Virtio 1.0 clock/timer + 1af4 1100 QEMU 1052 Virtio 1.0 input + 1af4 1100 QEMU 1053 Virtio 1.0 socket - 1058 virtio-mem - 105a Virtio file system - 1110 Inter-VM shared memory - 1af4 1100 QEMU Virtual Machine + 1af4 1100 QEMU + 1054 Virtio 1.0 crypto + 1af4 1100 QEMU + 1055 Virtio 1.0 signal distribution device + 1af4 1100 QEMU + 1056 Virtio 1.0 pstore device + 1af4 1100 QEMU + 1057 Virtio 1.0 IOMMU + 1af4 1100 QEMU + 1058 Virtio 1.0 mem + 1af4 1100 QEMU + 1059 Virtio 1.0 sound + 1af4 1100 QEMU + 105a Virtio 1.0 file system + 1af4 1100 QEMU + 105b Virtio 1.0 pmem + 1af4 1100 QEMU + 105c Virtio 1.0 rpmb + 1af4 1100 QEMU + 105d Virtio 1.0 mac80211-hwsim + 1af4 1100 QEMU + 105e Virtio 1.0 video encoder + 1af4 1100 QEMU + 105f Virtio 1.0 video decoder + 1af4 1100 QEMU + 1060 Virtio 1.0 SCMI + 1af4 1100 QEMU + 1061 Virtio 1.0 nitro secure module + 1af4 1100 QEMU + 1062 Virtio 1.0 I2C adapter + 1af4 1100 QEMU + 1063 Virtio 1.0 watchdog + 1af4 1100 QEMU + 1064 Virtio 1.0 can + 1af4 1100 QEMU + 1065 Virtio 1.0 dmabuf + 1af4 1100 QEMU + 1066 Virtio 1.0 parameter server + 1af4 1100 QEMU + 1067 Virtio 1.0 audio policy + 1af4 1100 QEMU + 1068 Virtio 1.0 Bluetooth + 1af4 1100 QEMU + 1069 Virtio 1.0 GPIO + 1af4 1100 QEMU + 1110 QEMU Inter-VM shared memory device + 1af4 1100 QEMU 1af5 Netezza Corp. 1afa J & W Electronics Co., Ltd. 1b00 Montage Technology Co., Ltd. @@ -25427,6 +25662,7 @@ 000b QEMU PCIe Expander bridge 000c QEMU PCIe Root port 000d QEMU XHCI Host Controller + 000e QEMU PCIe-to-PCI bridge 0010 QEMU NVM Express Controller 0011 QEMU PVPanic device 0013 QEMU UFS Host Controller @@ -25475,16 +25711,20 @@ 1028 2196 ROR-N1 1028 2286 BOSS-N1 DC-MHS 1028 2287 BOSS-N1 Modular DC-MHS + 1028 23b0 eBOSS-N1 DC-MHS 1b4b 2241 Santa Cruz NVMe Host Adapter 1b96 4000 WD_BLACK AN1500 NVMe SSD 1d49 0306 ThinkSystem M.2 NVMe 2-Bay RAID Enablement Kit 1d49 0307 ThinkSystem 7mm NVMe 2-Bay Rear RAID Enablement Kit + 207d 0800 TrustRAID B310n + 207d 0801 TrustRAID B260s 4c52 9541 LRNV9541 2-port M.2 NVMe Raid Adapter 2b42 88W8997 2.4/5 GHz Dual-Band 2x2 Wi-Fi® 5 (802.11ac) + Bluetooth® 5.3 Solution 2b43 NXP 88W9098 Wi-Fi 6 (ax) MAC #1 2b44 NXP 88W9098 Wi-Fi 6 (ax) MAC #2 2b45 NXP 88W9098 Bluetooth 5.3 9120 88SE9120 SATA 6Gb/s Controller + 9122 88SE912x SATA 6Gb/s Controller [AHCI mode] 9123 88SE9123 PCIe SATA 6.0 Gb/s controller dc93 600e DC-6xxe series SATA 6G controller 9125 88SE9125 PCIe SATA 6.0 Gb/s controller @@ -25493,14 +25733,19 @@ 9130 88SE9128 PCIe SATA 6 Gb/s RAID controller with HyperDuo 1043 8438 P8P67 Deluxe Motherboard 9170 88SE9170 PCIe 2.0 x1 2-port SATA 6 Gb/s Controller + 9171 88SE9171 PCIe 2.0 x1 1-port SATA 6 Gb/s Controller 9172 88SE9172 SATA 6Gb/s Controller 9178 88SE9170 PCIe SATA 6Gb/s Controller - 917a 88SE9172 SATA III 6Gb/s RAID Controller + 917a 88SE9172 SATA III 6Gb/s Controller [IDE mode] 9182 88SE9182 PCIe 2.0 x2 2-port SATA 6 Gb/s Controller 9183 88SS9183 PCIe SSD Controller + 9186 88SE9186 6Gb/s SATA 6Gb/s Controller [AHCI mode] + 918a 88SE9182 PCIe SATA 6 Gb/s controller [IDE mode] 9192 88SE9172 SATA III 6Gb/s RAID Controller 91a0 88SE912x SATA 6Gb/s Controller [IDE mode] + 91a3 88SE9128 PCIe SATA 6 Gb/s controller [IDE mode] 91a4 88SE912x IDE Controller + 91b0 88SE9172 SATA 6 Gb/s controller [IDE mode] 9215 88SE9215 PCIe 2.0 x1 4-port SATA 6 Gb/s Controller 9220 88SE9220 PCIe 2.0 x2 2-port SATA 6 Gb/s RAID Controller 9230 88SE9230 PCIe 2.0 x2 4-port SATA 6 Gb/s RAID Controller @@ -25560,6 +25805,7 @@ 1009 FL1009 USB 3.0 Host Controller 1100 FL1100 USB 3.0 Host Controller 16b8 6e31 Allegro Pro USB 3.0 PCIe + 1400 USB 3.0 Host Controller 1b74 OpenVox Communication Co. Ltd. 0115 D115P/D115E Single-port E1/T1 card d130 D130P/D130E Single-port E1/T1 card (3rd GEN) @@ -25721,6 +25967,9 @@ 5021 FireCuda 520 SSD # 1TB 5026 FireCuda 540 SSD + 5027 LaCie Rugged SSD Pro5 + 5100 PCIe Gen3 SSD + 5101 PCIe Gen5 SSD 1bb3 Bluecherry 4304 BC-04120A MPEG4 4 port video encoder / decoder 4309 BC-08240A MPEG4 4 port video encoder / decoder @@ -25782,6 +26031,8 @@ 100c NS8510G1Uxxx, NS8610G1Uxxx NVME SSD 100e NS8500G2Uxxxx, NS8600G2Uxxxx NVME SSD 100f NS6500G2UXXXX,NS6600G2UXXXX NVME SSD + 2981 32G SFP28 EP2744 Apatter + 1bd4 00b0 32G SFP28 EP2744 Apatter 1bee IXXAT Automation GmbH 0002 CAN-IB100/PCIe 0003 CAN-IB200/PCIe @@ -25846,6 +26097,8 @@ 0023 FD722-M2 0024 FD722 with bypass 0025 FD922 + 0026 FD788 + 0027 FD940 1c28 Lite-On IT Corp. / Plextor 0122 M6e PCI Express SSD [Marvell 88SS9183] # previously Fiberblaze @@ -26110,6 +26363,7 @@ 1ea0 2111 TP2511 Series E3.S NVMe Datacenter SSD(3.84TB) 1ea0 2200 TP2510 Series U.2 NVMe Datacenter SSD(7.68TB) 1ea0 2201 TP2511 Series U.2 NVMe Datacenter SSD(7.68TB) + 1ea0 2202 TP2310 Series U.2 NVMe Datacenter SSD(7.68TB) 1ea0 2210 TP2510 Series E3.S NVMe Datacenter SSD(7.68TB) 1ea0 2211 TP2511 Series E3.S NVMe Datacenter SSD(7.68TB) 1ea0 2301 TP2511 Series U.2 NVMe Datacenter SSD (15.36TB) @@ -26182,13 +26436,17 @@ 613a ATOM 50, LEGEND 840 NVMe SSD (DRAM-less) 621a LEGEND 850 NVMe SSD (DRAM-less) 622a LEGEND 960 NVMe SSD + 623a LEGEND 710 NVMe SSD (DRAM-less) 624a LEGEND 700, XPG GAMMIX S20 NVMe SSD (DRAM-less) 625a LEGEND 850 LITE NVMe SSD (DRAM-less) # 1TB 627a LEGEND 800 NVMe SSD (DRAM-less) # 500GB 628a LEGEND 800 NVMe SSD (DRAM-less) + 631a LEGEND 970 NVMe SSD 633a LEGEND 900 NVMe SSD (DRAM-less) + 634c LEGEND 820 NVMe SSD (DRAM-less) + 635a XPG GAMMIX S60 NVMe SSD (DRAM-less) 642a XPG GAMMIX S50 CORE NVMe SSD (DRAM-less) 8201 XPG SX8200 Pro PCIe Gen3x4 M.2 2280 Solid State Drive 1cc4 Shenzhen Unionmemory Information System Ltd. @@ -26219,15 +26477,17 @@ 6302 AM630 PCIe 4.0 NVMe SSD 256GB 6303 AM630 PCIe 4.0 x4 NVMe SSD Controller 6304 AM630 PCIe 4.0 NVMe SSD 1024GB - 660c RPETJ1T24MHP2QDQ PCIe 4.0 NVMe SSD 1024GB + 634c LEGEND 820 NVMe SSD (DRAM-less) + 635a GAMMIX S60 NVMe SSD (DRAM-less) + 660c AH660 PCIe 4.0 NVMe SSD 6a01 AM620 PCIe 3.0 NVMe SSD 128GB 6a02 AM6A0 PCIe 4.0 NVMe SSD 256GB 6a03 RPETJ512MKP1QDQ PCIe 4.0 NVMe SSD 512GB (DRAM-less) - 6a04 RPETJ1T24MKP2QDQ PCIe 4.0 NVMe SSD 1024GB (DRAM-less) + 6a04 AM6A0 PCIe 4.0 NVMe SSD 1024GB (DRAM-less) 6a13 RPJYJ512MKN1QWQ PCIe 4.0 NVMe SSD 512GB (DRAM-less) - 6a14 RPEYJ1T24MKN2QWY PCIe 4.0 NVMe SSD 1024GB (DRAM-less) + 6a14 AM6A1 PCIe 4.0 NVMe SSD 1024GB (DRAM-less) 6b04 AM6B0 PCIe 4.0 NVMe SSD - 6b13 RPJYJ512MLR1QWY PCIe 4.0 NVMe SSD 512GB (DRAM-less) + 6b13 AM6B1 PCIe 4.0 NVMe SSD 512GB (DRAM-less) 6b14 RPJYJ1T24MLR1HWY PCIe 4.0 NVMe SSD 1024GB (DRAM-less) 8030 NVMe SSD Controller UH8X2X/UH7X2X series 1cc4 1122 NVMe SSD UH812a U.2 1.92TB @@ -26278,6 +26538,7 @@ 0002 Pro Capture AIO 0010 Pro Capture Endpoint 0014 PRO CAPTURE AIO 4K PLUS + 0015 Pro Capture HDMI 4K + 0017 PRO CAPTURE AIO 4K 0051 Eco Capture Dual HDMI M.2 0052 Eco Capture HDMI 4K M.2 @@ -26299,6 +26560,56 @@ 000c ExaNIC V9P-3 0100 ExaDISK FX1 1cf0 Akitio +1cf2 ZTE Corp. + 8036 DH Switch + 8040 NEO X510 SRIOV PF Ethernet Controller + 8041 NEO X510 SRIOV VF Ethernet Controller Virtual Function + 8042 NX I512 VDPA VF Ethernet Controller Virtual Function + 8044 NEO X510 MPF Ethernet Controller + 8045 NX I512 BOND PF Ethernet Controller + 8046 NX I512 OVS PF Ethernet Controller + 8047 NEO X510 BOND PF Ethernet Controller + 8048 NEO X510 OVS PF Ethernet Controller + 8049 NX E312 SRIOV RDMA PF Ethernet Controller + 804a NEO X512 NOF PF Ethernet Controller + 804b NEO X512 SRIOV PF Ethernet Controller + 804c NEO X512 INITIATOR1 PF Ethernet Controller + 804d NEO X512 INITIATOR2 PF Ethernet Controller + 804e NX I512 UPF PF Ethernet Controller + 804f NX I512 UPF VF Ethernet Controller Virtual Function + 8060 NX E312 SRIOV RDMA VF Ethernet Controller Virtual Function + 8061 NX E310 SRIOV PF Ethernet Controller + 8062 NX E310 SRIOV VF Ethernet Controller Virtual Function + 8063 NX I510 BOND PF Ethernet Controller + 8064 NX I510 OVS PF Ethernet Controller + 8065 NX I510 VDPA VF Ethernet Controller Virtual Function + 8066 NX I511 SRIOV PF Ethernet Controller + 8067 NX I511 OVS PF Ethernet Controller + 8068 NX I511 VDPA VF Ethernet Controller Virtual Function + 806b NEO X512 RDMA PF Ethernet Controller + 806c NEO X512 RDMA VF Ethernet Controller Virtual Function + 806d NX I512 RDMA PF Ethernet Controller + 806e NX I512 RDMA VF Ethernet Controller Virtual Function + 806f NX I512 UPF BOND PF Ethernet Controller + 807d NX E312S SRIOV PF Ethernet Controller + 807e NX E316 SRIOV PF Ethernet Controller + 807f NX E316 SRIOV VF Ethernet Controller Virtual Function + 8080 NX E311 SRIOV PF Ethernet Controller + 8081 NX E311 SRIOV VF Ethernet Controller Virtual Function + 8082 NX I511 SRIOV PF Ethernet Controller + 8083 NX I511 SRIOV VF Ethernet Controller Virtual Function + 8084 NX E310 RDMA PF Ethernet Controller + 8085 NX E310 RDMA VF Ethernet Controller Virtual Function + 8086 NX I510 SRIOV SEC PF Ethernet Controller + 8087 NX I510 SRIOV SEC VF Ethernet Controller Virtual Function + 8088 NX E312S SRIOV VF Ethernet Controller Virtual Function + 8089 NEO X512 SRIOV PF Ethernet Controller + 808a NEO X512 SRIOV PF Ethernet Controller + 80a0 NX E312 PF Ethernet Controller + 80a1 NX E312 VF Ethernet Controller Virtual Function + 80a2 NX E312S_D SRIOV PF Ethernet Controller + 80a3 NX E312S_D SRIOV VF Ethernet Controller Virtual Function + 80a4 NX I512 OFFLOAD PF Ethernet Controller 1cf7 Subspace Dynamics 1cfa Corsair Memory, Inc 1cfd Mangstor @@ -26610,11 +26921,13 @@ 1d78 7202 Aliflash V2 U.2 15mm 1.92TB NVMe SSD 1d78 7204 Aliflash V2 U.2 15mm 3.84TB NVMe SSD 1d78 7208 Aliflash V2 U.2 15mm 7.68TB NVMe SSD + 1516 DERA D8436/D8456 NVMe SSD 1d79 Transcend Information, Inc. 2262 NVMe PCIe SSD 220S/MTE662T2 2263 NVMe PCIe SSD 110S/112S/120S/MTE300S/MTE400S/MTE652T2 (DRAM-less) 2264 NVMe PCIe SSD 250H 2267 NVMe PCIe SSD 220S/240S/MTE710T + 2269 NVMe PCIe SSD 410S (DRAM-less) 5766 NVMe PCIe SSD 110Q (DRAM-less) 1d7c Aerotech, Inc. # Fiber-optic HyperWire motion control bus from Aerotech. @@ -26683,6 +26996,7 @@ 5216 FORESEE XP1000 / Lexar Professional CFexpress Type B Gold series, NM620 PCIe NVME SSD (DRAM-less) 5220 FORESEE XP2100 NVMe SSD (DRAM-less) 5236 Lexar NM800 PRO NVME SSD + 5772 Lexar NQ700 NVME SSD (DRAM-less) # nee Facebook, Inc. 1d9b Meta Platforms, Inc. 0010 Networking DOM Engine @@ -26783,9 +27097,18 @@ 1dbe 5007 Dongting-N3 DC SSD U.2 12800GB 1dbe 5008 Dongting-N3 DC SSD U.2 15360GB 1dbe 5009 Dongting-N3 DC SSD U.2 25600GB - 1dbe 5010 Dongting-N3 DC SSD U.2 30720GB + 1dbe 5080 Dongting-N3 DC SSD U.2 30720GB 1dbe 5118 Dongting-N3Q DC QLC SSD U.2 15360GB 1dbe 5190 Dongting-N3Q DC QLC SSD U.2 30720GB + 1dbe 5192 Dongting-N3Q DC QLC SSD U.2 61440GB + 1dbe 5803 Dongting-N3 DC SSD E3.S 3200GB + 1dbe 5804 Dongting-N3 DC SSD E3.S 3840GB + 1dbe 5805 Dongting-N3 DC SSD E3.S 6400GB + 1dbe 5806 Dongting-N3 DC SSD E3.S 7680GB + 1dbe 5807 Dongting-N3 DC SSD E3.S 12800GB + 1dbe 5808 Dongting-N3 DC SSD E3.S 15360GB + 1dbe 5809 Dongting-N3 DC SSD E3.S 25600GB + 1dbe 5880 Dongting-N3 DC SSD E3.S 30720GB 1dbe 6116 Dongting-Z3Q DC ZNS SSD U.2 7680GB 5669 NVMe SSD Controller IG5669 [Tacoma] 1dbf Guizhou Huaxintong Semiconductor Technology Co., Ltd @@ -26810,6 +27133,7 @@ 4131 A1x NVMe SSD Series 4432 D2x NVMe SSD Series 5200 N5200 NVMe SSD +1dd5 Manli Technology Group Limited 1dd8 AMD Pensando Systems 0002 DSC2 Elba Upstream Port 1dd8 100e Distributed Services Card @@ -27045,6 +27369,10 @@ 1dd8 500e DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R5 1dd8 500f DSC2-200 50/100/200G 2-port 32G RAM 64G eMMC G2 DPU R4-T 1dd8 5200 DSC3-2Q400 100/200/400G 2-port DDR5 128G eMMC G3 Services Card + 100f Register/Memory Resource Device + 1dd8 5201 POLLARA-1Q400 100/200/400G 1-port Card + 1012 TAWK IPC Device + 1dd8 5201 POLLARA-1Q400 100/200/400G 1-port Card 1ddd Thorlabs 1de0 Groq 0000 TSP [GroqChip] @@ -27064,7 +27392,6 @@ 2000 NoLoad Hardware Development Kit 3000 eBPF-based PCIe Accelerator 1ded Alibaba (China) Co., Ltd. -# A RDMA (iWarp) device provided by Alibaba Cloud used in ECS environment 107f Elastic RDMA Adapter 5007 Elastic RDMA Adapter 8000 M1 Root Port @@ -27073,8 +27400,11 @@ 8003 RCEC PF 8004 RCEC VF 1dee Biwin Storage Technology Co., Ltd. + 1202 HP EX900 Plus NVMe SSD (DRAM-less) + 1602 HP FX700 NVMe SSD (DRAM-less) 2262 HP EX950 NVMe SSD 2263 HP EX900 NVMe SSD (DRAM-less) + 2500 XCG 2500 Enterprise Gen 4 SSD 4121 PCIe 4.0 SP406/416 NVMe SSD 1dee 0000 NVMe SSD SP416 800G 2.5" U.2 1dee 0001 NVMe SSD SP416 1.6T 2.5" U.2 @@ -27085,6 +27415,14 @@ 1dee 0012 NVMe SSD SP406 3.84T 2.5" U.2 1dee 0013 NVMe SSD SP406 7.68T 2.5" U.2 5161 BIWIN NVMe SSD SP506/SP516 + 1dee 0001 NVMe SSD SP516 1.6T 2.5" U.2 + 1dee 0002 NVMe SSD SP516 3.2T 2.5" U.2 + 1dee 0003 NVMe SSD SP516 6.4T 2.5" U.2 + 1dee 0004 NVMe SSD SP516 12.8T 2.5" U.2 + 1dee 0011 NVMe SSD SP506 1.92T 2.5" U.2 + 1dee 0012 NVMe SSD SP506 3.84T 2.5" U.2 + 1dee 0013 NVMe SSD SP506 7.68T 2.5" U.2 + 1dee 0014 NVMe SSD SP506 15.36T 2.5" U.2 5216 KingSpec NX series NVMe SSD (DRAM-less) 7700 BIWIN NVMe SSD SP50Y/SP51Y 1def Ampere Computing, LLC @@ -27225,6 +27563,26 @@ 1028 2193 NVMe CD7 E3.S 1.92TB 1028 2194 NVMe CD7 E3.S 3.84TB 1028 2195 NVMe CD7 E3.S 7.68TB + 0013 VMe SSD Controller CM7 + 1028 222d Ent NVMe CM7 FIPS U.2 RI 30.72TB + 1028 222e Ent NVMe CM7 FIPS U.2 RI 15.36TB + 1028 222f Ent NVMe CM7 FIPS U.2 RI 7.68TB + 1028 2230 Ent NVMe CM7 FIPS U.2 RI 3.84TB + 1028 2231 Ent NVMe CM7 FIPS U.2 RI 1.92TB + 1028 2232 Ent NVMe CM7 U.2 RI 30.72TB + 1028 2233 Ent NVMe CM7 U.2 RI 15.36TB + 1028 2234 Ent NVMe CM7 U.2 RI 7.68TB + 1028 2235 Ent NVMe CM7 U.2 RI 3.84TB + 1028 2236 Ent NVMe CM7 U.2 RI 1.92TB + 1028 2237 Ent NVMe CM7 FIPS U.2 MU 12.8TB + 1028 2238 Ent NVMe CM7 FIPS U.2 MU 6.4TB + 1028 2239 Ent NVMe CM7 FIPS U.2 MU 3.2TB + 1028 223a Ent NVMe CM7 FIPS U.2 MU 1.6TB + 1028 223b Ent NVMe CM7 U.2 MU 12.8TB + 1028 223c Ent NVMe CM7 U.2 MU 6.4TB + 1028 223d Ent NVMe CM7 U.2 MU 3.2TB + 1028 223e Ent NVMe CM7 U.2 MU 1.6TB + 1028 228c Ent NVMe CM7 U.2 MU 6.4TB 0014 NVMe SSD Controller CM7 EDSFF 1028 223f Ent NVMe CM7 FIPS E3.S RI 15.36TB 1028 2240 Ent NVMe CM7 FIPS E3.S RI 7.68TB @@ -27243,6 +27601,7 @@ 1028 22ba Ent NVMe CM7 FIPS E3.S MU 12.8TB 0018 Exceria Pro NVMe SSD 001a NVMe SSD Controller BG6 (DRAM-less) + 001b NVMe SSD Controller EG6 (DRAM-less) 001f NVMe SSD Controller CD8 1028 2223 DC NVMe CD8 U.2 SED 15.36TB 1028 2224 DC NVMe CD8 U.2 SED 7.68TB @@ -27284,6 +27643,12 @@ 1028 22c8 DC NVMe CD8P E3.S MU 6.4TB 1028 22c9 DC NVMe CD8P E3.S MU 3.2TB 1028 22ca DC NVMe CD8P E3.S MU 1.6TB + 002e NVMe SSD Controller XD8 + 002f NVMe SSD Controller BG7 (DRAM-less) + 0030 NVMe SSD Controller EG7 + 0031 PCIe 5.0 NVMe SSD Controller XG10 + 0032 PCIe 4.0 NVMe SSD Controller XG10d + 0033 Exceria Plus G4 NVMe SSD (DRAM-less) 1e17 Arnold & Richter Cine Technik GmbH & Co. Betriebs KG 1e18 Beijing GuangRunTong Technology Development Co.,Ltd 1e24 Squirrels Research Labs @@ -27325,6 +27690,8 @@ c033 S60G [Enflame] # FHFL PCIe card, dual slot, 3rd generation from Enflame, 48GB device memory c035 S60 [Enflame] + c041 L300 [Enflame] + c042 L600 [Enflame] # nee Thinci, Inc 1e38 Blaize, Inc 0102 Xplorer X1600 @@ -27449,6 +27816,13 @@ 1e3b 008a Enterprise NVMe SSD HHHL 0.8TB (H3900) 1e3b 008b Enterprise NVMe SSD HHHL 1.6TB (H3900) 1e3b 0091 Enterprise NVMe SSD HHHL 0.75TB (H3900) + 1321 AdgeStor NVMe SSD + 1e3b 4000 AdgeStor NVMe SSD M.2 0.48TB + 1e3b 4001 AdgeStor NVMe SSD M.2 0.96TB + 1e3b 4002 AdgeStor NVMe SSD M.2 1.92TB + 1e3b 4100 AdgeStor NVMe SSD M.2 0.48TB + 1e3b 4101 AdgeStor NVMe SSD M.2 0.96TB + 1e3b 4102 AdgeStor NVMe SSD M.2 1.92TB 1333 Haishen5 NVMe SSD 1e3b 001a Enterprise NVMe SSD E3.S 1T 3.84TB (H5100) 1e3b 001b Enterprise NVMe SSD E3.S 1T 7.68TB (H5100) @@ -27511,6 +27885,7 @@ 0021 ZHITAI TiPro5000 NVMe SSD 0041 ZHITAI TiPro7000 0071 ZHITAI TiPlus7100 + 0081 ZHITAI Ti600 NVMe SSD # YMTC 1001 PC005 NVMe SSD 1011 PC210 M.2 2280 NVMe SSD @@ -27519,6 +27894,7 @@ 1033 PC300 M.2 2242 NVMe SSD (DRAM-less) 1071 PC411 M.2 2280 NVMe SSD (DRAM-less) 1073 PC411 M.2 2242 NVMe SSD (DRAM-less) + 1081 PC41Q M.2 2280 NVMe SSD (DRAM-less) 1e4b MAXIO Technology (Hangzhou) Ltd. 1001 NVMe SSD Controller MAP1001 1002 NVMe SSD Controller MAP1002 (DRAM-less) @@ -27552,6 +27928,7 @@ 7010 AI controller A7010 1e60 Hailo Technologies Ltd. 2864 Hailo-8 AI Processor + 45c4 Hailo-10H AI Processor 1e67 Untether AI 0002 runAI200 AI Inference Accelerator 0004 speedAI240 AI Inference Accelerator @@ -27565,7 +27942,8 @@ 1e7c Brainchip Inc bca1 AKD1000 Neural Network Coprocessor [Akida] 1e7e Pliops - 9034 Pliops Extreme Data Processor [XDP1.0] + 0200 XDP [Extreme Data Processor PRO 1.0] + 9034 XDP [Extreme Data Processor FLEX 1.0] 1e7f Jiangsu Huacun Elec. Tech. Co., Ltd. 6002 MMY MMSP350 PCIe 3 NVMe SSD (DRAM-less) 6003 MMY HC512GP3KH2T PCIe 3 NVMe SSD (DRAM-less) @@ -27600,6 +27978,16 @@ 1005 PLEXTOR M10P(GN) NVMe SSD M.2 1007 CL4-8D512 NVMe SSD M.2 (DRAM-less) 1008 CL5-8D512 NVMe SSD M.2 (DRAM-less) + 100c CL6 Series NVMe SSD M.2 (DRAM-less) + 100d PJ1 Series NVMe SSD + 1e95 0001 M.2 2280 960 GB + 1e95 0002 M.2 2280 1920 GB + 1e95 100d M.2 2280 480 GB + 1010 CX3 Series NVMe SSD + 1e95 0000 M.2 2280 480 GB + 1e95 0001 M.2 2280 960 GB + 1e95 0002 M.2 2280 1,920 GB + 1e95 0003 M.2 2280 3,840 GB 3500 CA5-8D256 NVMe SSD M.2 35f1 PLEXTOR M9PGN Plus NVMe SSD M.2 9100 CL1-3D256-Q11 NVMe SSD M.2 @@ -27610,6 +27998,8 @@ 2a18 Video Transcode Controller 2a20 Cloud Intelligent Inference and Training Controller 2a22 Cloud Intelligent Inference Controller + 2a24 Cloud Intelligent Inference Controller + 2a26 Cloud Intelligent Inference Controller 2a30 Cloud Video Transcode Controller 1ea7 Intelliprop, Inc 223a Typhon+ PCIe to Gen-Z Bridge @@ -27637,30 +28027,59 @@ 0100 SV100 1ec6 0010 VA1V 1ec6 0011 VA1A - 1ec6 0012 VA1 + 1ec6 0012 VA1-16G 1ec6 0013 VA1E - 1ec6 0020 VA10V - 1ec6 0021 VA10A - 1ec6 0022 VA10 + 1ec6 0014 VA1L + 1ec6 0015 VA1-32G + 1ec6 0020 VA10-32G + 1ec6 0021 VA12-32G + 1ec6 0022 VA16 + 1ec6 0023 VA10-64G + 1ec6 0024 VA10L + 1ec6 0025 VA12-64G + 1ec6 0026 VA12-128G 1ec6 0030 VE1P 1ec6 0031 VE1S 1ec6 0032 VE1V 1ec6 0033 VE1M 1ec6 0034 VE1E - 1ec6 0040 VV1U + 1ec6 0035 VE1C + 1ec6 0036 VE1MT + 1ec6 003a VR1S-8G + 1ec6 003b VR1S-16G + 1ec6 003c VR1M-8G + 1ec6 003d VR1M-16G + 1ec6 003e VR1MT-8G + 1ec6 003f VR1MT-16G + 1ec6 0040 VA1M 1ec6 0041 VA1U + 1ec6 0050 VAM 0200 SG100 1ec6 0060 VG1200 1ec6 0061 VG1600 1ec6 0062 VG1800 - 1ec6 0063 VG1000 + 1ec6 0063 VG1000-32G + 1ec6 0064 VG600 + 1ec6 0065 VG800 + 1ec6 0066 VG1000-64G + 1ec6 0067 VG1000-24G + 1ec6 0068 VG1000c-24G + 1ec6 0069 VG1000c-32G + 1ec6 006a VG1000c-64G + 1ec6 006b VG1000c-16G + 1ec6 006c VG1000c-48G + 1ec6 006d VG600c + 1ec6 006e VG800c 020f SG100 vGPU + 0300 SR100 # nee Innosilicon Co Ltd 1ec8 Beijing Fantasy Technology Co., Ltd. 8800 Fantasy I 1ec8 12a2 Fantasy I Device 8810 Fantasy I 1ec8 12a2 Fantasy I Device + 8900 GR308 + 8902 GR3 Audio 9800 Fantasy II 1ec8 12a2 Fantasy II Device 9802 Fantasy II @@ -27669,6 +28088,7 @@ 1ec8 12a2 Fantasy II Device 9810 Fantasy II-M 1ec8 12a2 Fantasy II Device + 9a00 GR316 1ec9 Wingtech Group(HongKong)Limited 1eca Lightmatter 0000 Envise-B @@ -27752,6 +28172,18 @@ 1ee4 0425 NVMe SSD U.2 1.6TB (P8118Z3) 1ee4 0426 NVMe SSD U.2 3.2TB (P8118Z3) 1ee4 0427 NVMe SSD U.2 6.4TB (P8118Z3) + 1ee4 0515 NVMe SSD U.2 1.92TB (P8118Z4) + 1ee4 0516 NVMe SSD U.2 3.84TB (P8118Z4) + 1ee4 0517 NVMe SSD U.2 7.68TB (P8118Z4) + 1ee4 0525 NVMe SSD U.2 1.6TB (P8118Z4) + 1ee4 0526 NVMe SSD U.2 3.2TB (P8118Z4) + 1ee4 0527 NVMe SSD U.2 6.4TB (P8118Z4) + 1ee4 0615 NVMe SSD U.2 1.92TB (P8128Z3) + 1ee4 0616 NVMe SSD U.2 3.84TB (P8128Z3) + 1ee4 0617 NVMe SSD U.2 7.68TB (P8128Z3) + 1ee4 0625 NVMe SSD U.2 1.6TB (P8128Z3) + 1ee4 0626 NVMe SSD U.2 3.2TB (P8128Z3) + 1ee4 0627 NVMe SSD U.2 6.4TB (P8128Z3) 1ee4 3013 NVMe SSD AIC 480GB (P8118E) 1ee4 3014 NVMe SSD AIC 960GB (P8118E) 1ee4 3015 NVMe SSD AIC 1.92TB (P8118E) @@ -27776,6 +28208,30 @@ 1ee4 3225 NVMe SSD AIC 1.6TB (P8118X) 1ee4 3226 NVMe SSD AIC 3.2TB (P8118X) 1ee4 3227 NVMe SSD AIC 6.4TB (P8118X) + 1ee4 3315 NVMe SSD AIC 1.92TB (P8118E4) + 1ee4 3316 NVMe SSD AIC 3.84TB (P8118E4) + 1ee4 3317 NVMe SSD AIC 7.68TB (P8118E4) + 1ee4 3325 NVMe SSD AIC 1.6TB (P8118E4) + 1ee4 3326 NVMe SSD AIC 3.2TB (P8118E4) + 1ee4 3327 NVMe SSD AIC 6.4TB (P8118E4) + 1ee4 3415 NVMe SSD AIC 1.92TB (P8118Z3) + 1ee4 3416 NVMe SSD AIC 3.84TB (P8118Z3) + 1ee4 3417 NVMe SSD AIC 7.68TB (P8118Z3) + 1ee4 3425 NVMe SSD AIC 1.6TB (P8118Z3) + 1ee4 3426 NVMe SSD AIC 3.2TB (P8118Z3) + 1ee4 3427 NVMe SSD AIC 6.4TB (P8118Z3) + 1ee4 3515 NVMe SSD AIC 1.92TB (P8118Z4) + 1ee4 3516 NVMe SSD AIC 3.84TB (P8118Z4) + 1ee4 3517 NVMe SSD AIC 7.68TB (P8118Z4) + 1ee4 3525 NVMe SSD AIC 1.6TB (P8118Z4) + 1ee4 3526 NVMe SSD AIC 3.2TB (P8118Z4) + 1ee4 3527 NVMe SSD AIC 6.4TB (P8118Z4) + 1ee4 3615 NVMe SSD AIC 1.92TB (P8128Z3) + 1ee4 3616 NVMe SSD AIC 3.84TB (P8128Z3) + 1ee4 3617 NVMe SSD AIC 7.68TB (P8128Z3) + 1ee4 3625 NVMe SSD AIC 1.6TB (P8128Z3) + 1ee4 3626 NVMe SSD AIC 3.2TB (P8128Z3) + 1ee4 3627 NVMe SSD AIC 6.4TB (P8128Z3) 1ee4 abcd NVMe SSD U.2 1181 PETA8118 NVMe E1S Series 1ee4 2015 NVMe SSD E1.S 1.92TB (P8118E) @@ -27796,6 +28252,30 @@ 1ee4 2225 NVMe SSD E1.S 1.6TB (P8118X) 1ee4 2226 NVMe SSD E1.S 3.2TB (P8118X) 1ee4 2227 NVMe SSD E1.S 6.4TB (P8118X) + 1ee4 2315 NVMe SSD E1.S 1.92TB (P8118E4) + 1ee4 2316 NVMe SSD E1.S 3.84TB (P8118E4) + 1ee4 2317 NVMe SSD E1.S 7.68TB (P8118E4) + 1ee4 2325 NVMe SSD E1.S 1.6TB (P8118E4) + 1ee4 2326 NVMe SSD E1.S 3.2TB (P8118E4) + 1ee4 2327 NVMe SSD E1.S 6.4TB (P8118E4) + 1ee4 2415 NVMe SSD E1.S 1.92TB (P8118Z3) + 1ee4 2416 NVMe SSD E1.S 3.84TB (P8118Z3) + 1ee4 2417 NVMe SSD E1.S 7.68TB (P8118Z3) + 1ee4 2425 NVMe SSD E1.S 1.6TB (P8118Z3) + 1ee4 2426 NVMe SSD E1.S 3.2TB (P8118Z3) + 1ee4 2427 NVMe SSD E1.S 6.4TB (P8118Z3) + 1ee4 2515 NVMe SSD E1.S 1.92TB (P8118Z4) + 1ee4 2516 NVMe SSD E1.S 3.84TB (P8118Z4) + 1ee4 2517 NVMe SSD E1.S 7.68TB (P8118Z4) + 1ee4 2525 NVMe SSD E1.S 1.6TB (P8118Z4) + 1ee4 2526 NVMe SSD E1.S 3.2TB (P8118Z4) + 1ee4 2527 NVMe SSD E1.S 6.4TB (P8118Z4) + 1ee4 2615 NVMe SSD E1.S 1.92TB (P8128Z3) + 1ee4 2616 NVMe SSD E1.S 3.84TB (P8128Z3) + 1ee4 2617 NVMe SSD E1.S 7.68TB (P8128Z3) + 1ee4 2625 NVMe SSD E1.S 1.6TB (P8128Z3) + 1ee4 2626 NVMe SSD E1.S 3.2TB (P8128Z3) + 1ee4 2627 NVMe SSD E1.S 6.4TB (P8128Z3) 1182 PETA8118 NVMe M2 Series 1ee4 1013 NVMe SSD M.2 480GB (P8118E) 1ee4 1014 NVMe SSD M.2 960GB (P8118E) @@ -27821,6 +28301,46 @@ 1ee4 1224 NVMe SSD M.2 800GB (P8118X) 1ee4 1225 NVMe SSD M.2 1.6TB (P8118X) 1ee4 1226 NVMe SSD M.2 3.2TB (P8118X) + 1ee4 1313 NVMe SSD M.2 480GB (P8118E4) + 1ee4 1314 NVMe SSD M.2 960GB (P8118E4) + 1ee4 1315 NVMe SSD M.2 1.92TB (P8118E4) + 1ee4 1316 NVMe SSD M.2 3.84TB (P8118E4) + 1ee4 1317 NVMe SSD M.2 7.68TB (P8118E4) + 1ee4 1323 NVMe SSD M.2 400GB (P8118E4) + 1ee4 1324 NVMe SSD M.2 800GB (P8118E4) + 1ee4 1325 NVMe SSD M.2 1.6TB (P8118E4) + 1ee4 1326 NVMe SSD M.2 3.2TB (P8118E4) + 1ee4 1327 NVMe SSD M.2 6.4TB (P8118E4) + 1ee4 1413 NVMe SSD M.2 480GB (P8118Z3) + 1ee4 1414 NVMe SSD M.2 960GB (P8118Z3) + 1ee4 1415 NVMe SSD M.2 1.92TB (P8118Z3) + 1ee4 1416 NVMe SSD M.2 3.84TB (P8118Z3) + 1ee4 1417 NVMe SSD M.2 7.68TB (P8118Z3) + 1ee4 1423 NVMe SSD M.2 400GB(P8118Z3) + 1ee4 1424 NVMe SSD M.2 800GB (P8118Z3) + 1ee4 1425 NVMe SSD M.2 1.6TB (P8118Z3) + 1ee4 1426 NVMe SSD M.2 3.2TB (P8118Z3) + 1ee4 1427 NVMe SSD M.2 6.4TB (P8118Z3) + 1ee4 1513 NVMe SSD M.2 480GB (P8118Z4) + 1ee4 1514 NVMe SSD M.2 960GB (P8118Z4) + 1ee4 1515 NVMe SSD M.2 1.92TB (P8118Z4) + 1ee4 1516 NVMe SSD M.2 3.84TB (P8118Z4) + 1ee4 1517 NVMe SSD M.2 7.68TB (P8118Z4) + 1ee4 1523 NVMe SSD M.2 400GB (P8118Z4) + 1ee4 1524 NVMe SSD M.2 800GB (P8118Z4) + 1ee4 1525 NVMe SSD M.2 1.6TB (P8118Z4) + 1ee4 1526 NVMe SSD M.2 3.2TB (P8118Z4) + 1ee4 1527 NVMe SSD M.2 6.4TB (P8118Z4) + 1ee4 1613 NVMe SSD M.2 480GB (P8128Z3) + 1ee4 1614 NVMe SSD M.2 960GB (P8128Z3) + 1ee4 1615 NVMe SSD M.2 1.92TB (P8128Z3) + 1ee4 1616 NVMe SSD M.2 3.84TB (P8128Z3) + 1ee4 1617 NVMe SSD M.2 7.68TB (P8128Z3) + 1ee4 1623 NVMe SSD M.2 400GB (P8128Z3) + 1ee4 1624 NVMe SSD M.2 800GB (P8128Z3) + 1ee4 1625 NVMe SSD M.2 1.6TB (P8128Z3) + 1ee4 1626 NVMe SSD M.2 3.2TB (P8128Z3) + 1ee4 1627 NVMe SSD M.2 6.4TB (P8128Z3) 1ee9 SUSE LLC 1eec Viscore Technologies Ltd 0102 VSE250231S Dual-port 10Gb/25Gb Ethernet PCIe @@ -27871,6 +28391,8 @@ 1111 RBLN-CA11 (VF) 1120 RBLN-CA12 (PF) 1121 RBLN-CA12 (VF) + 1210 RBLN-CA21 (PF) + 1211 RBLN-CA21 (VF) 1220 RBLN-CA22 (PF) 1221 RBLN-CA22 (VF) 1250 RBLN-CA25 (PF) @@ -27914,15 +28436,15 @@ 3408 M18110 Lx Family OCP 3409 M18110 Family BASE-T OCP 340a M18110 Lx Family BASE-T OCP - 340b M18120 Family - 340c M18120 Lx Family - 340d M18120 Family BASE-T - 340e M18120 Lx Family BASE-T - 340f M18120 Family OCP - 3410 M18120 Lx Family OCP - 3411 M18120 Family BASE-T OCP - 3412 M18120 Lx Family BASE-T OCP - 3413 M18100 Family Virtual Function + 340b M18000 Family + 340c M18000 Lx Family + 340d M18000 Family BASE-T + 340e M18000 Lx Family BASE-T + 340f M18000 Family OCP + 3410 M18000 Lx Family OCP + 3411 M18000 Family BASE-T OCP + 3412 M18000 Lx Family BASE-T OCP + 3413 M18000 Family Virtual Function 9088 D1055AS PCI Express Switch Downstream Port 1f16 XConn Technologies # XConn XC50256 CXL2.0/PCIe5.0 switch @@ -28002,21 +28524,115 @@ 1f44 VVDN Technologies Private Limited 1f47 YUSUR Technology Co., Ltd. 1001 FLEXFLOW-2200T Ethernet Controller - 1f47 0001 FLEXFLOW-2200T Ethernet 10G 2P - 1f47 0002 FLEXFLOW-2200T Ethernet 25G 2P - 1f47 0003 FLEXFLOW-2200T Ethernet 40G 2P - 1f47 0004 FLEXFLOW-2200T Ethernet 100G 1P - 1f47 0005 FLEXFLOW-2200T Ethernet 100G 2P - 1f47 0006 FLEXFLOW-2200T Ethernet 10G 2P - 1f47 0007 FLEXFLOW-2200T Ethernet 25G 2P - 1f47 0008 FLEXFLOW-2200T Ethernet 40G 2P - 1f47 0009 FLEXFLOW-2200T Ethernet 100G 1P - 1f47 000a FLEXFLOW-2200T Ethernet 100G 2P - 1003 FLEXFLOW-2200T Ethernet Controller MGMT Function + 1f47 0001 Ethernet 10G 2P FLEXFLOW-2200T + 1f47 0002 Ethernet 25G 2P FLEXFLOW-2200T + 1f47 0003 Ethernet 40G 2P FLEXFLOW-2200T + 1f47 0004 Ethernet 100G 1P FLEXFLOW-2200T + 1f47 0005 Ethernet 100G 2P FLEXFLOW-2200T + 1f47 0006 Ethernet 10G 2P FLEXFLOW-2200T + 1f47 0007 Ethernet 25G 2P FLEXFLOW-2200T + 1f47 0008 Ethernet 40G 2P FLEXFLOW-2200T + 1f47 0009 Ethernet 100G 1P FLEXFLOW-2200T + 1f47 000a Ethernet 100G 2P FLEXFLOW-2200T + 1002 FLEXFLOW-2200T Ethernet Controller [Virtual Function] + 1003 FLEXFLOW-2200T Ethernet Controller [MGMT Function] + 1004 FLEXFLOW-2200T DATA Offload Engine + 1005 CONFLUX-2200P NVMe Controller + 1011 FLEXFLOW-2200T Ethernet Controller + 1f47 0001 Ethernet 10G 2P FLEXFLOW-2200T + 1f47 0002 Ethernet 25G 2P FLEXFLOW-2200T + 1f47 0003 Ethernet 40G 2P FLEXFLOW-2200T + 1f47 0004 Ethernet 100G 1P FLEXFLOW-2200T + 1f47 0005 Ethernet 100G 2P FLEXFLOW-2200T + 1f47 0006 Ethernet 10G 2P FLEXFLOW-2200T + 1f47 0007 Ethernet 25G 2P FLEXFLOW-2200T + 1f47 0008 Ethernet 40G 2P FLEXFLOW-2200T + 1f47 0009 Ethernet 100G 1P FLEXFLOW-2200T + 1f47 000a Ethernet 100G 2P FLEXFLOW-2200T +# RDMA-PF + 1203 FLEXFLOW-2200T RoCEv2 Network Controller # Network Accelerating Card 2018 DPU Card # Network Accelerating Card 2020 DPU + 3101 FLEXFLOW-2100R Ethernet Controller + 1f47 0001 Ethernet 10G 2P FLEXFLOW-2100R + 1f47 0002 Ethernet 25G 2P FLEXFLOW-2100R + 1f47 0003 Ethernet 50G 2P FLEXFLOW-2100R + 1f47 0004 Ethernet 100G 2P FLEXFLOW-2100R + 1f47 0005 Ethernet 10G 2P FLEXFLOW-2100R + 1f47 0006 Ethernet 25G 2P FLEXFLOW-2100R + 1f47 0007 Ethernet 50G 2P FLEXFLOW-2100R + 1f47 0008 Ethernet 100G 2P FLEXFLOW-2100R + 3201 FLEXFLOW-2200R Ethernet Controller + 1f47 0001 Ethernet 10G 2P FLEXFLOW-2200R + 1f47 0002 Ethernet 25G 2P FLEXFLOW-2200R + 1f47 0003 Ethernet 50G 2P FLEXFLOW-2200R + 1f47 0004 Ethernet 100G 2P FLEXFLOW-2200R + 1f47 0005 Ethernet 10G 2P FLEXFLOW-2200R + 1f47 0006 Ethernet 25G 2P FLEXFLOW-2200R + 1f47 0007 Ethernet 50G 2P FLEXFLOW-2200R + 1f47 0008 Ethernet 100G 2P FLEXFLOW-2200R + 3211 FLEXFLOW-2200R Ethernet Controller + 1f47 0001 Ethernet 10G 2P FLEXFLOW-2200R + 1f47 0002 Ethernet 25G 2P FLEXFLOW-2200R + 1f47 0003 Ethernet 50G 2P FLEXFLOW-2200R + 1f47 0004 Ethernet 100G 2P FLEXFLOW-2200R + 1f47 0005 Ethernet 10G 2P FLEXFLOW-2200R + 1f47 0006 Ethernet 25G 2P FLEXFLOW-2200R + 1f47 0007 Ethernet 50G 2P FLEXFLOW-2200R + 1f47 0008 Ethernet 100G 2P FLEXFLOW-2200R + 4001 CONFLUX-2200E Ethernet Controller + 1f47 0001 Ethernet 25G 2P CONFLUX-2200E + 1f47 0002 Ethernet 40G 2P CONFLUX-2200E + 1f47 0003 Ethernet 100G 1P CONFLUX-2200E + 1f47 0004 Ethernet 100G 2P CONFLUX-2200E + 1f47 0005 Ethernet 25G 2P CONFLUX-2200E + 1f47 0006 Ethernet 40G 2P CONFLUX-2200E + 1f47 0007 Ethernet 100G 1P CONFLUX-2200E + 1f47 0008 Ethernet 100G 2P CONFLUX-2200E + 4002 CONFLUX-2200E Ethernet Controller [Virtual Function] + 4003 CONFLUX-2200E Ethernet Controller [MGMT Function] + 4004 CONFLUX-2200E DATA Offload Engine + 4203 CONFLUX-2200E RoCEv2 Network Controller + 5001 CONFLUX-2200P Ethernet Controller + 1f47 0001 Ethernet 25G 2P CONFLUX-2200P + 1f47 0003 Ethernet 100G 2P CONFLUX-2200P + 1f47 0004 Ethernet 25G 2P CONFLUX-2200P + 1f47 0006 Ethernet 100G 2P CONFLUX-2200P + 1f47 0007 Ethernet 25G 2P CONFLUX-2200P + 1f47 0009 Ethernet 100G 2P CONFLUX-2200P + 1f47 000a Ethernet 25G 2P CONFLUX-2200P + 1f47 000c Ethernet 100G 2P CONFLUX-2200P + 5002 CONFLUX-2200P Ethernet Controller [Virtual Function] + 5003 CONFLUX-2200P NVMe Controller + 1f47 0001 Ethernet 25G 2P CONFLUX-2200P + 1f47 0003 Ethernet 100G 2P CONFLUX-2200P + 1f47 0004 Ethernet 25G 2P CONFLUX-2200P + 1f47 0006 Ethernet 100G 2P CONFLUX-2200P + 1f47 0007 Ethernet 25G 2P CONFLUX-2200P + 1f47 0009 Ethernet 100G 2P CONFLUX-2200P + 1f47 000a Ethernet 25G 2P CONFLUX-2200P + 1f47 000c Ethernet 100G 2P CONFLUX-2200P + 5004 CONFLUX-2200P NVMe Controller [Virtual Function] + 5005 CONFLUX-2200P Ethernet Controller [MGMT Function] + 1f47 0001 CONFLUX-2200P Ethernet Controller [MGMT Function] + 1f47 0002 CONFLUX-2200P Ethernet Controller [MGMT Function] DPU + 5006 CONFLUX-2200P Ethernet Controller [YDMI Function] + 1f47 0001 CONFLUX-2200P Ethernet Controller [YDMI Function] + 1f47 0002 CONFLUX-2200P Ethernet Controller [YDMI Function] DPU + 5007 CONFLUX-2200P DATA OFFLOAD ENGINE + 5011 CONFLUX-2200P Ethernet Controller + 1f47 0004 Ethernet 25G 2P CONFLUX-2200P + 1f47 0006 Ethernet 100G 2P CONFLUX-2200P + 1f47 000a Ethernet 25G 2P CONFLUX-2200P + 1f47 000c Ethernet 100G 2P CONFLUX-2200P + 5015 CONFLUX-2200P Ethernet Controller [MGMT Function] + 1f47 0001 CONFLUX-2200P Ethernet Controller [MGMT Function] + 1f47 0002 CONFLUX-2200P Ethernet Controller [MGMT Function] DPU + 5016 CONFLUX-2200P Ethernet Controller [YDMI Function] + 1f47 0001 CONFLUX-2200P Ethernet Controller [YDMI Function] + 1f47 0002 CONFLUX-2200P Ethernet Controller [YDMI Function] DPU 1f4b Axera Semiconductor Co., Ltd 1f52 MangoBoost Inc. 1008 Mango GPUBoost - RDMA @@ -28035,7 +28651,11 @@ 1059 metaFusion DPU SoC Network Interface 1111 YSA-100 RDMA Ethernet Network Controller 1bd4 00b2 O1E2YYSA100 + 1bd4 00b9 O2E1YYSA100 1ff9 00b1 ENFY1102-QP2 + 1ff9 00b8 ENFY1202-QP1 + 1ff9 00ba ENFY1251-SP4 + 1ff9 00bb ENFY1251-SP4 (Roce) 1112 metaScale SmartNIC Virtual Function 1151 metaVisor DPU Physical Function 1152 metaVisor DPU Virtual Function @@ -28046,7 +28666,15 @@ 0100 Default ID for Titanium FPGA PCIe Interface (AXI) 1f82 d-Matrix 0011 Corsair [DMX 1000 Series] + 00f1 Jetstream [DMX F1 Transparent NIC] +1f90 Quside Technologies + 7024 QRNG PCIe Device + 7025 QRNG PCIe Device 1f99 Shenzhen Techwinsemi Technology Co., Ltd. + 1202 TWSC TE3420 series + 1608 PCIe Gen4 x4 M.2 2280 + 1f88 TE3420 PCIe Gen3 x4 M.2 2280 + 3420 PCIe Gen3 x4 M.2 2280 1f9d Axelera AI 1100 Metis AIPU (rev 02) 11aa Metis AIPU (rev 01) @@ -28168,10 +28796,14 @@ 2030 EIC7700 Root Complex 1fe4 HippStor Technology 1600 HP600 Series NVMe SSD + 1fe4 0001 Enterprise NVMe SSD U.2 15.36TB (HP600) + 1fe4 0003 Enterprise NVMe SSD U.2 12.80TB (HP630) + 1fe4 0011 Enterprise NVMe SSD U.2 30.72TB (HP620) + 1fe4 0013 Enterprise NVMe SSD U.2 61.44TB (HP620) 1fe4 0075 Enterprise NVMe SSD U.2 3.84TB(HP610) 1fe4 0076 Enterprise NVMe SSD U.2 7.68TB(HP610) - 1fe4 0077 Enterprise NVMe SSD U.2 6.40TB(HP630) 1fe4 0078 Enterprise NVMe SSD U.2 3.20TB(HP630) + 1fe4 0079 Enterprise NVMe SSD U.2 6.40TB (HP630) 1fe9 MemryX 0100 MX3 # Linkdata Technology (Tianjin) Co., LTD @@ -28217,11 +28849,16 @@ 2036 0863 NF1618 Family NX863 (2*100GE) 2036 0864 NF1618 Family NX864 (1*200GE) 1619 NF1618 Family Virtual Function +203b XTX Markets Technologies Ltd. 2046 GXMICRO Technology (Shanghai) Co., Ltd. 2048 Beijing SpaceControl Technology Co.Ltd +2058 Lime Microsystems Ltd. 205c Zhejiang VMing Semiconductor Co., Ltd. + 1514 EP9410 U.2 1.92TB NVME SSD 1515 EP9410 U.2 3.84TB NVME SSD - 1516 EP9410 U.2 7.68TB NVME SSD + 1534 EP9430 U.2 1.6TB NVME SSD + 1535 EP9430 U.2 3.2TB NVME SSD + 1536 EP9430 U.2 6.4TB NVME SSD 2061 Unis Flash Memory 4000 E4000 controller 4100 E4100 controller @@ -28274,13 +28911,32 @@ 5402 KCP54(02) 2280 PCIe G4 x4 TLC 5403 KCP54(03) 2280 PCIe G4 x4 TLC 5404 KCP54(04) 2280 PCIe G4 x4 TLC +2099 Rolling Wireless S.a.r.l. 209b BitIntelligence Technology 1000 TCU Family - TCU-1 + 1001 TCU Family - TCU-1 Virtual Function 209f Mobilint, Inc. 20a7 EEVengers Inc. +20a8 Rayson HI-TECH(SZ) Co., Ltd. 20a9 LDA Technologies Ltd. 1008 NEOTAPX FPGA Accelerator Card 1104 NEOTAPX FPGA Timing Synchronization Card +20ba Hangzhou Hikstorage Technology Co., Ltd. + 1202 NAND memory controller + 20ba 1202 NVMe SSD V2000 (DRAM-less) +20bb Quantum Machines + 0111 OPNIC +20bc Xinsheng Technology Co., Ltd. + 1001 Smart Network Adapter + 20bc 1082 Ethernet Network Adapter XS-N1082-2X for 10GbE SFP+ Dual-port + 20bc 2083 Ethernet Network Adapter XS-N2083-2X for 25GbE SFP28 SFP+ Dual-port ROCEv2 + 20bc 2084 Ethernet Network Adapter XS-N2084-2X for 25GbE SFP28 SFP+ Dual-port ROCEv2 + 20bc 4084 Ethernet Network Adapter XS-N4084-2X for 100GbE QSFP28/56 Dual-port + 2001 Solid State Storage +20d0 Telin Semiconductor (Wuhan) Co., Ltd. + 2001 PACIFIC-S1 NVMe SSD +20d2 Awide Labs LTD. + 0200 XRaid [Extreme Performance Compression RAID Accelerator] 20f4 TRENDnet 2116 ZyDAS Technology Corp. 21b4 Hunan Goke Microelectronics Co., Ltd @@ -28321,7 +28977,7 @@ 501c NV2 NVMe SSD [E19T] (DRAM-less) 501d NV2 NVMe SSD [TC2200] (DRAM-less) 501e OM3PGP4 NVMe SSD (DRAM-less) - 501f FURY Renegade NVMe SSD + Heatsink [E18] + 501f FURY Renegade NVMe SSD [E18] (Heatsink) 5021 OM8SEP4 Design-In PCIe 4 NVMe SSD (QLC) (DRAM-less) 5022 OM8PGP4 Design-In PCIe 4 NVMe SSD (QLC) (DRAM-less) 5023 NV2 NVMe SSD [SM2269XT] (DRAM-less) @@ -28331,7 +28987,10 @@ 5027 NV3 NVMe SSD [E27T] (DRAM-less) 5028 NV3 NVMe SSD [SM2268XT2] (DRAM-less) 502a FURY Renegade G5 NVMe SSD [SM2508] + 502b NV3 NVMe SSD [E29T] (DRAM-less) 502c DC3000ME NVMe SSD [SC5] + 502d OM8TAP4 PCIe 4 NVMe SSD (QLC) (DRAM-less) + 5030 NV3 2230 NVMe SSD [SM2268XT2] (DRAM-less) 270b Xantel Corporation 270f Chaintech Computer Co. Ltd 2711 AVID Technology Inc. @@ -28388,6 +29047,14 @@ 3475 Arista Networks, Inc. 34ba Ice Lake-LP PCI Express Root Port #3 3513 ARCOM Control Systems Ltd +3633 DeepCool + 0001 AK400 DIGITAL CPU Air Cooler + 0002 AK620 DIGITAL CPU Air Cooler + 0003 AK500 DIGITAL CPU Air Cooler + 0004 AK500S DIGITAL CPU Air Cooler + 0005 CH560 DIGITAL PC Case + 0006 LS Series (LS520 / LS720 SE DIGITAL) CPU Liquid Cooler + 0007 MORPHEUS PC Case 369a HighSecLabs, Ltd. 37d9 ITD Firm ltd. 1138 SCHD-PH-8 Phase detector @@ -28447,6 +29114,7 @@ 1004 Permedia 3d04 Permedia ffff Glint VGA +3e08 Sinead Tech Co., Ltd 4005 Avance Logic Inc. 0300 ALS300 PCI Audio Device 0308 ALS300+ PCI Audio Device @@ -28488,6 +29156,8 @@ 4143 Digital Equipment Corp 4144 Alpha Data 0044 ADM-XRCIIPro +4149 AIMOTIVE Kft. + d011 HIL camera injector board 4150 ONA Electroerosion 0001 PCI32TLITE FILSTRUP1 PCI to VME Bridge Controller 0006 PCI32TLITE UART 16550 Opencores @@ -29044,6 +29714,7 @@ 3d06 Arise-GT-10C0t 3d07 Arise2030 3d08 Arise2020 + 3d0e Arise10D0 3d40 GLF HDMI/DP Audio 3d41 GLF HDMI/DP Audio 3d43 GLF HDMI/DP Audio @@ -29892,11 +30563,14 @@ 8086 0001 Ethernet Controller X710 Intel(R) FPGA Programmable Acceleration Card N3000 for Networking 0d00 Crystal Well DRAM Controller 0d01 Crystal Well PCI Express x16 Controller + 0d03 Crystal Well Dynamic Platform and Thermal Framework Processor Participant 0d04 Crystal Well DRAM Controller 0d05 Crystal Well PCI Express x8 Controller 0d09 Crystal Well PCI Express x4 Controller 0d0c Crystal Well HD Audio Controller + 0d12 Crystal Well Integrated Graphics Controller 0d16 Crystal Well Integrated Graphics Controller + 0d22 Crystal Well Integrated Iris Pro Graphics 5200 0d26 Crystal Well Integrated Graphics Controller 0d36 Crystal Well Integrated Graphics Controller 0d4c Ethernet Connection (11) I219-LM @@ -30656,6 +31330,9 @@ 8086 4532 Desktop Board D815EEA2/D815EFV 8086 4541 D815EEA Motherboard 8086 4557 D815EGEW Mainboard + 1133 Thunderbolt 4 Bridge [Maple Ridge 2C 2020] + 1134 Thunderbolt 4 NHI [Maple Ridge 2C 2020] + 1135 Thunderbolt 4 USB Controller [Maple Ridge 2C 2020] 1136 Thunderbolt 4 Bridge [Maple Ridge 4C 2020] 1137 Thunderbolt 4 NHI [Maple Ridge 4C 2020] 1138 Thunderbolt 4 USB Controller [Maple Ridge 4C 2020] @@ -30889,6 +31566,9 @@ 8086 0001 Ethernet Network Adapter E830-XXV-2 for OCP 3.0 8086 0003 Ethernet Network Adapter E830-XXV-2 8086 0004 Ethernet Network Adapter E830-XXV-4 for OCP 3.0 + 8086 0005 Ethernet Network Adapter E830-XXV-8F for OCP 3.0 + 8086 0006 Ethernet Network Adapter E830-XXV-8F + 8086 0007 Ethernet Network Adapter E830-XXV-4F 12d4 Ethernet Controller E830-CC for SFP-DD 12d5 Ethernet Controller E830-C for backplane 12d8 Ethernet Controller E830-C for QSFP @@ -31128,6 +31808,7 @@ 1059 0190 RD20057 M.2 Dual 1GbE-T1 15m 1539 I211 Gigabit Network Connection 153a Ethernet Connection I217-LM + 1028 0617 Precision T5810 103c 1909 ZBook 15 103c 1998 EliteDesk 800 G1 17aa 220e ThinkPad T440p @@ -32499,6 +33180,7 @@ 1734 1055 Amilo M1420 17aa 2013 ThinkPad R60e 17aa 20ae ThinkPad T61/R61 + 17aa 20f4 ThinkPad T400 17c0 10d2 Medion Akoya E7214 Notebook PC [MD98410] 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] 8086 544b Desktop Board D425KT @@ -34275,7 +34957,9 @@ 17aa 20a6 ThinkPad T61/R61 17c0 4083 Medion WIM 2210 Notebook PC [MD96850] e4bf cc47 CCG-RUMBA + 2880 Ice Lake DDRIO Registers 28c0 Volume Management Device NVMe RAID Controller + 1d49 011a Intel VROC (VMD NVMe RAID) for ThinkSystem V4 PL 2912 82801IH (ICH9DH) LPC Interface Controller 2914 82801IO (ICH9DO) LPC Interface Controller 1028 0211 Optiplex 755 @@ -34504,18 +35188,22 @@ 103c 2a6f Asus IPIBL-LB Motherboard 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] + 17aa 20f3 ThinkPad T400 8086 2940 Optiplex 755 2942 82801I (ICH9 Family) PCI Express Port 2 1028 020d Inspiron 530 + 17aa 20f3 ThinkPad T400 2944 82801I (ICH9 Family) PCI Express Port 3 1028 020d Inspiron 530 103c 2a6f Asus IPIBL-LB Motherboard 2946 82801I (ICH9 Family) PCI Express Port 4 1028 020d Inspiron 530 + 17aa 20f3 ThinkPad T400 2948 82801I (ICH9 Family) PCI Express Port 5 1028 020d Inspiron 530 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] 1462 7345 MS-7345 Motherboard: Intel 82801I/IR [ICH9/ICH9R] + 17aa 20f3 ThinkPad T400 294a 82801I (ICH9 Family) PCI Express Port 6 1028 020d Inspiron 530 1043 8277 P5K PRO Motherboard: 82801IR [ICH9R] @@ -34681,9 +35369,11 @@ e4bf cc4d CCM-BOOGIE 2a42 Mobile 4 Series Chipset Integrated Graphics Controller 1028 02aa Dell Inspiron 1545 + 17aa 20e4 ThinkPad T400 17aa 2112 ThinkPad T400 e4bf cc4d CCM-BOOGIE 2a43 Mobile 4 Series Chipset Integrated Graphics Controller + 17aa 20e4 ThinkPad T400 17aa 2112 ThinkPad T400 e4bf cc4d CCM-BOOGIE 2a44 Mobile 4 Series Chipset MEI Controller @@ -34691,6 +35381,7 @@ 2a45 Mobile 4 Series Chipset MEI Controller 2a46 Mobile 4 Series Chipset PT IDER Controller 2a47 Mobile 4 Series Chipset AMT SOL Redirection + 17aa 20ec ThinkPad T400 2a50 Cantiga MEI Controller 2a51 Cantiga MEI Controller 2a52 Cantiga PT IDER Controller @@ -35264,7 +35955,33 @@ 3438 7500/5520/5500/X58 I/O Hub Throttle Registers 3440 Ice Lake UPI Misc 3441 Ice Lake UPI Link/Phy0 + 3442 Ice Lake UPI Phy0 Registers + 3445 Ice Lake UPI Mesh Stop Registers + 3446 Ice Lake UPI PMON0 Registers + 3447 Ice Lake UPI PMON1 Registers + 3448 Ice Lake PCU Registers + 344a Ice Lake Integrated Memory Controller + 344b Ice Lake PCU Registers + 344c Ice Lake CHA Registers + 344d Ice Lake CHA Registers + 344f Ice Lake CHA Registers + 3450 Ice Lake Ubox Registers + 3451 Ice Lake Ubox Registers + 3452 Ice Lake Ubox Registers + 3455 Ice Lake Ubox Registers 3456 Ice Lake NorthPeak + 3457 Ice Lake CHA Registers + 3458 Ice Lake PCU Registers + 3459 Ice Lake PCU Registers + 345a Ice Lake PCU Registers + 345b Ice Lake PCU Registers + 345c Ice Lake PCU Registers + 345d Ice Lake PCU Registers + 345e Ice Lake PCU Registers + 347a Ice Lake PCI Express Root Port A + 347b Ice Lake PCI Express Root Port B + 347c Ice Lake PCI Express Root Port C + 347d Ice Lake PCI Express Root Port D 347e Ice Lake Xeon Non-Transparent Bridge 3482 Ice Lake-LP LPC Controller 34a3 Ice Lake-LP SMBus Controller @@ -35495,7 +36212,12 @@ 372b Xeon C5500/C3500 Core 372c Xeon C5500/C3500 Reserved 373f Xeon C5500/C3500 IOxAPIC - 37c8 C62x Chipset QuickAssist Technology + 37c0 C62x chipset series PCIe x16/x8 Upstream Port + 37c2 C62x chipset series PCIe Virtual Switch Port 0 + 37c3 C62x chipset series PCIe Virtual Switch Port 1 + 37c4 C62x chipset series PCIe Virtual Switch Port 2 + 37c5 C62x chipset series PCIe Virtual Switch Port 3 + 37c8 C62x Chipset series QuickAssist Technology Physical Function 0~2 8086 0001 QuickAssist Adapter 8960 8086 0002 QuickAssist Adapter 8970 37c9 C62x Chipset QuickAssist Technology Virtual Function @@ -35864,6 +36586,8 @@ 3c2e Xeon E5/Core i7 DMA 3c2f Xeon E5/Core i7 DMA 3c40 Xeon E5/Core i7 IIO Switch and IRP Performance Monitor + 3c41 Sandy Bridge QPI Port 0 Performance Monitor + 3c42 Sandy Bridge QPI Port 1 Performance Monitor 3c43 Xeon E5/Core i7 Ring to PCI Express Performance Monitor 3c44 Xeon E5/Core i7 Ring to QuickPath Interconnect Link 0 Performance Monitor 3c45 Xeon E5/Core i7 Ring to QuickPath Interconnect Link 1 Performance Monitor @@ -35872,9 +36596,11 @@ 3c80 Xeon E5/Core i7 QPI Link 0 3c83 Xeon E5/Core i7 QPI Link Reut 0 3c84 Xeon E5/Core i7 QPI Link Reut 0 + 3c86 Sandy Bridge QPI Port 0 DFX Link 3c90 Xeon E5/Core i7 QPI Link 1 3c93 Xeon E5/Core i7 QPI Link Reut 1 3c94 Xeon E5/Core i7 QPI Link Reut 1 + 3c96 Sandy Bridge QPI Port 1 DFX Link 3ca0 Xeon E5/Core i7 Processor Home Agent 3ca8 Xeon E5/Core i7 Integrated Memory Controller Registers 3caa Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 0 @@ -35914,6 +36640,7 @@ 3e18 8th Gen Core 4-core Workstation Processor Host Bridge/DRAM Registers [Coffee Lake S] 3e1f 8th Gen Core 4-core Desktop Processor Host Bridge/DRAM Registers [Coffee Lake S] 1458 5000 Z370 AORUS Gaming K3-CF + 3e20 i9 Core / Xeon E 2200M Coffee Lake Host Bridge / DRAM Registers 3e30 8th/9th Gen Core 8-core Desktop Processor Host Bridge/DRAM Registers [Coffee Lake S] 3e33 8th/9th Gen Core Processor Host Bridge/DRAM Registers [Coffee Lake] 3e34 Coffee Lake HOST and DRAM Controller @@ -35942,7 +36669,7 @@ 3ec2 8th Gen Core Processor Host Bridge/DRAM Registers 1028 0869 Vostro 3470 1043 8694 PRIME H310M-D - 3ec4 8th Gen Core Processor Host Bridge/DRAM Registers + 3ec4 8th/9th Gen Core Processor Host Bridge / DRAM Registers 3ec6 8th Gen Core Processor Host Bridge/DRAM Registers 3eca 8th Gen Core Processor Host Bridge/DRAM Registers 3ed0 8th Gen Core Processor Host Bridge/DRAM Registers @@ -36394,9 +37121,16 @@ 8086 0001 EtherExpress PRO/100 Server Ethernet Adapter 530d 80310 (IOP) IO Processor 5481 Alder Lake-N PCH eSPI Controller +# https://edc.intel.com/content/www/us/en/design/products/platforms/processor-and-core-i3-n-series-datasheet-volume-1-of-2/002/pch-device-and-revision-ids/ + 54a0 Alder Lake-N P2SB Bridge + 54a1 Alder Lake-N Power Management Controller (PMC) 54a3 Alder Lake-N SMBus 54a4 Alder Lake-N SPI (flash) Controller + 54a6 Alder Lake-N Intel Trace Hub 54a8 Alder Lake-N Serial IO UART Host Controller + 54a9 Alder Lake-N UART Controller + 54aa Alder Lake-N Generic SPI (GSPI) Controller #0 + 54ab Alder Lake-N Generic SPI (GSPI) Controller #1 54b0 Alder Lake-N PCI Express Root Port #9 54b1 Alder Lake-N PCI Express Root Port #10 54b2 Alder Lake-N PCI Express Root Port #11 @@ -36406,13 +37140,34 @@ 54ba Alder Lake-N PCI Express Root Port #3 54bb Alder Lake-N PCI Express Root Port #4 54be Alder Lake-N PCI Express Root Port #7 + 54c4 Alder Lake-N eMMC Controller + 54c5 Alder Lake-N I2C Controller #4 + 54c6 Alder Lake-N I2C Controller #5 + 54c7 Alder Lake-N UART Controller #2 54c8 Alder Lake-N PCH High Definition Audio Controller + 54d0 Alder Lake-N Touch Host Controller #0 (THC #0) + 54d1 Alder Lake-N Touch Host Controller #1 (THC #1) 54d3 Alder Lake-N SATA AHCI Controller + 54da Alder Lake-N UART Controller #3 54e0 Alder Lake-N PCH HECI Controller - 54ed Alder Lake-N PCH USB 3.2 xHCI Host Controller + 54e1 Alder Lake-N PCH HECI Controller + 54e4 Alder Lake-N PCH HECI Controller + 54e5 Alder Lake-N PCH HECI Controller + 54e8 Alder Lake-N PCH I2C Controller + 54e9 Alder Lake-N PCH I2C Controller + 54ea Alder Lake-N PCH I2C Controller + 54eb Alder Lake-N PCH I2C Controller + 54ed Alder Lake-N PCH USB 3.2 Gen 2x1 (10 Gb/s) xHCI Host Controller + 54ee Alder Lake-N USB 3.2 Gen 1x1 (5 Gb/s) Device Controller (xDCI) 54ef Alder Lake-N PCH Shared SRAM - 54f0 CNVi: Wi-Fi + 54f0 Alder Lake-N PCH CNVi WiFi 8086 0244 Wi-Fi 6 AX101NGW + 54f1 Alder Lake-N PCH CNVi WiFi + 54f2 Alder Lake-N PCH CNVi WiFi + 54f3 Alder Lake-N PCH CNVi WiFi + 54fb Alder Lake-N Generic SPI (GSPI) Controller #2 + 54fc Alder Lake-N Integrated Sensor Hub + 54ff Alder Lake-N UFS Controller 5502 Ethernet Controller (2) I225-LMvP 103c 87b9 Thunderbolt Dock G4 PCIe NIC 17aa 2303 ThinkPad Universal Thunderbolt 4 Dock PCIe NIC @@ -36449,21 +37204,21 @@ 56c0 ATS-M [Data Center GPU Flex 170] 56c1 ATS-M [Data Center GPU Flex 140] 56c2 ATS-M [Data Center GPU Flex 170V] - 5780 Thunderbolt 80/120G Bridge [Barlow Ridge Host 80G 2023] - 5781 Thunderbolt 80/120G NHI [Barlow Ridge Host 80G 2023] - 5782 Thunderbolt 80/120G USB Controller [Barlow Ridge Host 80G 2023] - 5783 Thunderbolt Bridge [Barlow Ridge Host 40G 2023] - 5784 Thunderbolt NHI [Barlow Ridge Host 40G 2023] - 5785 Thunderbolt USB Controller [Barlow Ridge Host 40G 2023] - 5786 Thunderbolt 80/120G Bridge [Barlow Ridge Hub 80G 2023] - 5787 Thunderbolt 80/120G USB Controller [Barlow Ridge Hub 80G 2023] + 5780 JHL9580 Thunderbolt 5 80/120G Bridge [Barlow Ridge Host 80G 2023] + 5781 JHL9580 Thunderbolt 5 80/120G NHI [Barlow Ridge Host 80G 2023] + 5782 JHL9580 Thunderbolt 5 80/120G USB Controller [Barlow Ridge Host 80G 2023] + 5783 JHL9540 Thunderbolt 4 Bridge [Barlow Ridge Host 40G 2023] + 5784 JHL9540 Thunderbolt 4 NHI [Barlow Ridge Host 40G 2023] + 5785 JHL9540 Thunderbolt 4 USB Controller [Barlow Ridge Host 40G 2023] + 5786 JHL9480 Thunderbolt 5 80/120G Bridge [Barlow Ridge Hub 80G 2023] + 5787 JHL9480 Thunderbolt 5 80/120G USB Controller [Barlow Ridge Hub 80G 2023] 5795 Granite Rapids Chipset LPC Controller 579c Ethernet Connection E825-C for backplane 579d Ethernet Connection E825-C for QSFP 579e Ethernet Connection E825-C for SFP 579f Ethernet Connection E825-C 10GbE - 57a4 Thunderbolt Bridge [Barlow Ridge Hub 40G 2023] - 57a5 Thunderbolt USB Controller [Barlow Ridge Hub 40G 2023] + 57a4 JHL9440 Thunderbolt 4 Bridge [Barlow Ridge Hub 40G 2023] + 57a5 JHL9440 Thunderbolt 4 USB Controller [Barlow Ridge Hub 40G 2023] 57ad E610 Virtual Function 57ae Ethernet Controller E610 Backplane 57af Ethernet Controller E610 SFP @@ -36557,8 +37312,11 @@ 5ae8 Celeron N3350/Pentium N4200/Atom E3900 Series Low Pin Count Interface 5aee Celeron N3350/Pentium N4200/Atom E3900 Series HSUART Controller #4 5af0 Celeron N3350/Pentium N4200/Atom E3900 Series Host Bridge + 641d Lunar Lake-M Dynamic Tuning Technology 6420 Lunar Lake [Intel Graphics] 643e Lunar Lake NPU + 645d Lunar Lake IPU + 647d Lunar Lake-M Crashlog and Telemetry 64a0 Lunar Lake [Intel Arc Graphics 130V / 140V] 64b0 Lunar Lake [Intel Graphics] 65c0 5100 Chipset Memory Controller Hub @@ -36918,6 +37676,7 @@ 7af8 Alder Lake-S Integrated Sensor Hub 7afc Alder Lake-S PCH Serial IO I2C Controller #4 7afd Alder Lake-S PCH Serial IO I2C Controller #5 + 7d01 Meteor Lake-H 6p+8e cores Host Bridge/DRAM Controller 7d03 Meteor Lake-P Dynamic Tuning Technology 7d0b Volume Management Device NVMe RAID Controller Intel Corporation 7d0d Meteor Lake-P Platform Monitoring Technology @@ -36933,6 +37692,7 @@ 7dd1 Arrow Lake-P [Intel Graphics] 7dd5 Meteor Lake-P [Intel Graphics] 7e01 Meteor Lake-P LPC/eSPI Controller + 7e02 Meteor Lake-H eSPI Controller 7e22 Meteor Lake-P SMBus Controller 7e23 Meteor Lake-P SPI Controller 7e24 Meteor Lake-P Trace Hub @@ -36941,12 +37701,14 @@ 7e27 Meteor Lake-P Serial IO SPI Controller #0 7e28 Meteor Lake-P HD Audio Controller 7e30 Meteor Lake-P Serial IO SPI Controller #1 + 7e3f Meteor Lake-H/U PCIe Root Port #8 7e40 Meteor Lake PCH CNVi WiFi 8086 0094 Wi-Fi 6E AX211 160MHz # Refer from Intel Meteor Lake EDS (doc#640228) under its "Device IDs" section. 7e45 Meteor Lake-P Integrated Sensor Hub 7e46 Meteor Lake-P Serial IO SPI Controller #2 7e4c Meteor Lake-P Gaussian & Neural-Network Accelerator + 7e4d Meteor Lake-H/U PCIe Root Port #9 7e50 Meteor Lake-P Serial IO I2C Controller #4 7e51 Meteor Lake-P Serial IO I2C Controller #5 7e52 Meteor Lake-P Serial IO UART Controller #2 @@ -36958,6 +37720,7 @@ 7e7b Meteor Lake-P Serial IO I2C Controller #3 7e7d Meteor Lake-P USB 3.2 Gen 2x1 xHCI Host Controller 7e7e Meteor Lake-P USB Device Controller + 7e7f Meteor Lake-H/U Shared SRAM 7ec0 Meteor Lake-P Thunderbolt 4 USB Controller 7ec2 Meteor Lake-P Thunderbolt 4 NHI #0 7ec3 Meteor Lake-P Thunderbolt 4 NHI #1 @@ -36965,6 +37728,8 @@ 7ec5 Meteor Lake-P Thunderbolt 4 PCI Express Root Port #1 7ec6 Meteor Lake-P Thunderbolt 4 PCI Express Root Port #2 7ec7 Meteor Lake-P Thunderbolt 4 PCI Express Root Port #3 + 7eca Meteor Lake-H/U PCIe Root Port #10 + 7ecc Meteor Lake-H PCIe Root Port #12 7f70 Arrow Lake-S PCH CNVi WiFi 8086 0094 WiFi 6E AX211 160MHz 8002 Trusted Execution Technology Registers @@ -37233,8 +37998,10 @@ 8d08 C610/X99 series chipset 2-port SATA Controller [IDE mode] 8d0e C610/X99 series chipset SATA Controller [RAID mode] 8d10 C610/X99 series chipset PCI Express Root Port #1 + 1028 0617 Precision T5810 8d11 C610/X99 series chipset PCI Express Root Port #1 8d12 C610/X99 series chipset PCI Express Root Port #2 + 1028 0617 Precision T5810 8d13 C610/X99 series chipset PCI Express Root Port #2 8d14 C610/X99 series chipset PCI Express Root Port #3 8d15 C610/X99 series chipset PCI Express Root Port #3 @@ -37249,24 +38016,30 @@ 8d1e C610/X99 series chipset PCI Express Root Port #8 8d1f C610/X99 series chipset PCI Express Root Port #8 8d20 C610/X99 series chipset HD Audio Controller + 1028 0617 Precision T5810 8d21 C610/X99 series chipset HD Audio Controller 8d22 C610/X99 series chipset SMBus Controller + 1028 0617 Precision T5810 15d9 0821 X10DRW-i 15d9 0832 X10SRL-F 8d24 C610/X99 series chipset Thermal Subsystem 15d9 0821 X10DRW-i 8d26 C610/X99 series chipset USB Enhanced Host Controller #1 + 1028 0617 Precision T5810 15d9 0821 X10DRW-i 15d9 0832 X10SRL-F 8d2d C610/X99 series chipset USB Enhanced Host Controller #2 + 1028 0617 Precision T5810 15d9 0821 X10DRW-i 15d9 0832 X10SRL-F 8d31 C610/X99 series chipset USB xHCI Host Controller + 1028 0617 Precision T5810 15d9 0821 X10DRW-i 15d9 0832 X10SRL-F 8d33 C610/X99 series chipset LAN Controller 8d34 C610/X99 series chipset NAND Controller 8d3a C610/X99 series chipset MEI Controller #1 + 1028 0617 Precision T5810 15d9 0821 X10DRW-i 15d9 0832 X10SRL-F 8d3b C610/X99 series chipset MEI Controller #2 @@ -37279,6 +38052,7 @@ 8d42 C610/X99 series chipset LPC Controller 8d43 C610/X99 series chipset LPC Controller 8d44 C610/X99 series chipset LPC Controller + 1028 0617 Precision T5810 15d9 0821 X10DRW-i 15d9 0832 X10SRL-F 8d45 C610/X99 series chipset LPC Controller @@ -37294,12 +38068,14 @@ 8d4f C610/X99 series chipset LPC Controller 8d60 C610/X99 series chipset sSATA Controller [IDE mode] 8d62 C610/X99 series chipset sSATA Controller [AHCI mode] + 1028 0617 Precision T5810 15d9 0821 X10DRW-i 8d64 C610/X99 series chipset sSATA Controller [RAID mode] 8d66 C610/X99 series chipset sSATA Controller [RAID mode] 8d68 C610/X99 series chipset sSATA Controller [IDE mode] 8d6e C610/X99 series chipset sSATA Controller [RAID mode] 8d7c C610/X99 series chipset SPSR + 1028 0617 Precision T5810 15d9 0821 X10DRW-i 15d9 0832 X10SRL-F 8d7d C610/X99 series chipset MS SMBus 0 @@ -37887,6 +38663,7 @@ a1ea C620 Series Chipset Family PCI Express Root Port #20 a1ec C620 Series Chipset Family MROM 0 a1ed C620 Series Chipset Family MROM 1 + a1f0 C62x HD Audio Controller a1f8 Lewisburg IE: HECI #1 a1f9 Lewisburg IE: HECI #2 a1fa Lewisburg IE: IDE-r @@ -37894,12 +38671,33 @@ a1fc Lewisburg IE: HECI #3 a202 Lewisburg SATA Controller [AHCI mode] a206 Lewisburg SATA Controller [RAID mode] + a210 Lewisburg PCI Express Root Port + a211 Lewisburg PCI Express Root Port + a212 Lewisburg PCI Express Root Port + a213 Lewisburg PCI Express Root Port + a214 Lewisburg PCI Express Root Port + a215 Lewisburg PCI Express Root Port + a216 Lewisburg PCI Express Root Port + a217 Lewisburg PCI Express Root Port + a218 Lewisburg PCI Express Root Port + a219 Lewisburg PCI Express Root Port + a21a Lewisburg PCI Express Root Port + a21b Lewisburg PCI Express Root Port + a21c Lewisburg PCI Express Root Port + a21d Lewisburg PCI Express Root Port + a21e Lewisburg PCI Express Root Port + a21f Lewisburg PCI Express Root Port + a221 Lewisburg Power Management Controller a223 Lewisburg SMBus a224 Lewisburg SPI Controller a242 Lewisburg LPC or eSPI Controller a243 Lewisburg LPC or eSPI Controller a252 Lewisburg SSATA Controller [AHCI mode] a256 Lewisburg SSATA Controller [RAID mode] + a267 Lewisburg PCI Express Root Port + a268 Lewisburg PCI Express Root Port + a269 Lewisburg PCI Express Root Port + a26a Lewisburg PCI Express Root Port a282 200 Series PCH SATA controller [AHCI mode] 1462 7a72 H270 PC MATE a286 200 Series PCH SATA controller [RAID mode] @@ -37973,11 +38771,14 @@ 1028 0869 Vostro 3470 a305 Z390 Chipset LPC/eSPI Controller a306 Q370 Chipset LPC/eSPI Controller - a308 300 Series Chipset Family LPC Controller - a309 Cannon Point-LP LPC Controller + a307 Q360 Chipset LPC/eSPI Controller + a308 B360 Chipset LPC/eSPI Controller + a309 C246 Chipset LPC/eSPI Controller + a30a C242 Chipset LPC/eSPI Controller a30c QM370 Chipset LPC/eSPI Controller - a30d HM470 Chipset LPC/eSPI Controller - a30e Cannon Lake LPC Controller + a30d HM370 Chipset LPC/eSPI Controller + a30e CM246 Chipset LPC/eSPI Controller + a313 Cannon Lake LPC/eSPI Controller a323 Cannon Lake PCH SMBus Controller 1028 0869 Vostro 3470 a324 Cannon Lake PCH SPI Controller @@ -38108,14 +38909,21 @@ a840 BE201 320MHz a845 Lunar Lake-M Integrated Sensor Hub a847 Lunar Lake-M UFS Controller + a848 Lunar Lake-M Touch Host Controller #0 ID1 + a849 Lunar Lake-M Touch Host Controller #0 ID2 + a84a Lunar Lake-M Touch Host Controller #1 ID1 + a84b Lunar Lake-M Touch Host Controller #1 ID2 a84e Lunar Lake-M Thunderbolt 4 PCI Express Root Port #0 a84f Lunar Lake-M Thunderbolt 4 PCI Express Root Port #1 a860 Lunar Lake-M Thunderbolt 4 PCI Express Root Port #2 + a870 Lunar Lake-M CSME HECI #1 + a873 Lunar Lake-M Keyboard and Text (KT) Redirection a878 Lunar Lake-M Serial IO I2C Controller #0 a879 Lunar Lake-M Serial IO I2C Controller #1 a87a Lunar Lake-M Serial IO I2C Controller #2 a87b Lunar Lake-M Serial IO I2C Controller #3 a87d Lunar Lake-M USB 3.2 Gen 2x1 xHCI Host Controller + a87f Lunar Lake-M Shared SRAM abc0 Omni-Path Fabric Switch Silicon 100 Series ad0b Volume Management Device NVMe RAID Controller Intel Corporation ad1d Arrow Lake NPU @@ -38124,6 +38932,10 @@ b081 Panther Lake [Intel Graphics] b082 Panther Lake [Intel Graphics] b083 Panther Lake [Intel Graphics] + b084 Panther Lake [Intel Graphics] + b085 Panther Lake [Intel Graphics] + b086 Panther Lake [Intel Graphics] + b087 Panther Lake [Intel Graphics] b08f Panther Lake [Intel Graphics] b090 Panther Lake [Intel Graphics] b0a0 Panther Lake [Intel Graphics] @@ -38170,9 +38982,14 @@ e20c Battlemage G21 [Arc B570] e20d Battlemage G21 [Intel Graphics] e210 Battlemage G21 [Intel Graphics] + e211 Battlemage G21 [Intel Graphics] e212 Battlemage G21 [Intel Graphics] e215 Battlemage G21 [Intel Graphics] e216 Battlemage G21 [Intel Graphics] + e220 Battlemage G31 [Intel Graphics] + e221 Battlemage G31 [Intel Graphics] + e222 Battlemage G31 [Intel Graphics] + e223 Battlemage G31 [Intel Graphics] f1a5 SSD 600P Series 8086 390a SSDPEKKW256G7 256GB f1a6 SSD DC P4101/Pro 7600p/760p/E 6100p Series @@ -38181,6 +38998,8 @@ f1a8 SSD 660P Series f1aa SSD 670p Series [Keystone Harbor] faf0 SSD 665p Series [Neptune Harbor Refresh] + fd80 Wildcat Lake [Intel Graphics] + fd81 Wildcat Lake [Intel Graphics] 8088 Beijing Wangxun Technology Co., Ltd. 0100 WX1860AL-W Gigabit Ethernet Controller 0101 WX1860A2 Gigabit Ethernet Controller @@ -38321,8 +39140,8 @@ 4c52 3043 LRES3043PT Dual-port 1Gb Ethernet Server Adapter for OCP 8866 T-Square Design Inc. 8888 Silicon Magic -# 4 port HDMI capture card - 8504 AVMatrix VC42 + 8504 AVMatrix VC42 4-port HDMI Capture + 8581 AVMatrix VC12 4K HDMI Capture 8912 TRX # 8c4a is not Winbond but there is a board misprogrammed 8c4a Winbond @@ -38890,6 +39709,7 @@ 0001 SG2010 PCI over Starfabric Bridge 0002 SG2010 PCI to Starfabric Gateway 0003 SG1010 Starfabric Switch and PCI Bridge +9999 MetaX Integrated Circuits (Shanghai) Co., Ltd. 9a11 Tiger Lake-H Gaussian & Neural Accelerator 9d32 Beijing Starblaze Technology Co. Ltd. 0000 STAR1000 PCIe NVMe SSD Controller @@ -38903,6 +39723,7 @@ 1501 STAR1500C NVMe SSD 1502 STAR1500E NVMe SSD 1504 STAR1500L NVMe SSD + 1505 STAR1500K NVMe SSD # NVMe Gen5 Controller 16ch 1516 STAR1516 PCIe NVMe SSD Controller 2000 STAR2000 NVMe Controller @@ -39014,6 +39835,7 @@ c0a9 Micron/Crucial Technology 5421 P3 Plus NVMe PCIe SSD (DRAM-less) 5426 P310 NVMe PCIe SSD (DRAM-less) 542b T705 NVMe PCIe SSD + 560b E100 NVMe PCIe SSD (DRAM-less) c0de Motorola c0fe Motion Engineering, Inc. ca01 I-TEK OptoElectronics Co., LTD. @@ -39102,6 +39924,8 @@ d20c Chengdu BeiZhongWangXin Technology Co., Ltd. d20c e421 N6S Series 2-port 40GbE Network Adapter d20c ea21 N6S Series 2-port 100GbE Network Adapter d405 LeapIO + 8200 LeapHBA + 8201 LeapRAID d4d4 Dy4 Systems Inc 0601 PCI Mezzanine Card d531 I+ME ACTIA GmbH @@ -39270,11 +40094,13 @@ edd8 ARK Logic Inc a099 2000PV [Stingray] a0a1 2000MT a0a9 2000MI +efab Enfabrica # Found on M2N68-AM Motherboard f043 ASUSTeK Computer Inc. (Wrong ID) f05b Foxconn International, Inc. (Wrong ID) f111 Framework Computer Inc. f117 Cerio + 00ff Test Device 1000 Emulated PCIe Switch 1010 Placeholder Device 1020 Pseudo-Device @@ -39488,6 +40314,7 @@ C 08 Generic system peripheral 04 PCI Hot-plug controller 05 SD Host controller 06 IOMMU + 07 Root Complex Event Collector 80 System peripheral 99 Timing Card # PTP Grandmaster Source Clock diff --git a/share/misc/usb_vendors b/share/misc/usb_vendors index 3e72fe4045e6..fa798e65ed9a 100644 --- a/share/misc/usb_vendors +++ b/share/misc/usb_vendors @@ -9,8 +9,8 @@ # The latest version can be obtained from # http://www.linux-usb.org/usb.ids # -# Version: 2025.04.01 -# Date: 2025-04-01 20:34:02 +# Version: 2025.09.15 +# Date: 2025-09-15 20:34:02 # # Vendors, devices and interfaces. Please keep sorted. @@ -59,6 +59,8 @@ 0112 Card Reader 017c MLK 145f Trust Deskset +019c mek + 0042 mek_42 0200 TP-Link 0201 MA180 UMTS Modem 0204 Chipsbank Microelectronics Co., Ltd @@ -69,6 +71,9 @@ 0231 Sonuus Limited 02ad HUMAX Co., Ltd. 138c PVR Mass Storage +0300 Ajazz + 1010 Akp153E Desktop Controller + 1020 AKP153R Desktop Controller 0303 Mini Automation Controller 0324 OCZ Technology Inc bc06 OCZ ATV USB 2.0 Flash Drive @@ -95,7 +100,7 @@ 0015 ATAPI Enclosure 2123 SiPix StyleCam Deluxe 8004 Aox 99001 -03e9 Thesys Microelectronics +03e9 Melexis (formerly Thesys Microelectronics) 03ea Data Broadcasting Corp. 03eb Atmel Corp. 0902 4-Port Hub @@ -257,6 +262,8 @@ 0423 HS-COMBO Cardreader 042a LaserJet M1132 MFP 0441 Prime [NW280AA, G8X92AA] + 046b Dock G5 + 0483 Engage Go 10 Tablet 0504 DeskJet 885c 0505 ScanJet 2100c 0507 DVD+RW @@ -266,6 +273,7 @@ 0517 LaserJet 1000 051d Bluetooth Interface 052a LaserJet M1212nf MFP + 0583 Engage Go 10 Tablet 0601 ScanJet 6300c 0604 DeskJet 840c 0605 ScanJet 2200c @@ -275,6 +283,7 @@ 0624 Bluetooth Dongle 0641 X1200 Optical Mouse 0653 DeskJet 3700 series + 0683 Engage Go 10 Tablet 0701 ScanJet 5300c/5370c 0704 DeskJet 825c 0705 ScanJet 4400c @@ -325,6 +334,7 @@ 1102 PhotoSmart 240 series 1104 DeskJet 959c 1105 ScanJet 5470c/5490c + 110c Pocket Media Drive 1111 OfficeJet v60 1116 Jornada 568 Pocket PC 1117 LaserJet 1300n @@ -1013,6 +1023,7 @@ 3000 Optical dual-touch panel 3001 Optical Touch Screen 3008 Optical Touch Screen + 4033 HD Webcam a060 HD Webcam 0409 NEC Corp. 0011 PC98 Series Layout Keyboard Mouse @@ -1029,6 +1040,7 @@ 004e SuperScript 1400 Series 004f Wireless Keyboard with One-touch start buttons 0050 7-port hub + 0056 uPD720133 IDE bridge 0058 HighSpeed Hub 0059 HighSpeed Hub 005a HighSpeed Hub @@ -1486,6 +1498,7 @@ 4095 Live! Cam Sync HD [VF0770] 4097 Live! Cam Chat HD [VF0700/VF0790] 4099 Creative VF0800 [RealSense Camera SR300] + 40a3 Live! Cam V3 2K [VF-0900] 4100 Nomad Jukebox 2 4101 Nomad Jukebox 3 4102 NOMAD MuVo^2 @@ -1959,6 +1972,7 @@ 010d 3500-4500 series 010f 6500 series 0142 X3650 (Printer, Scanner, Copier) + 01bd S800 Series Scanner 01fa S310 series 020e RICOH Aficio SP 4410SF 4303 Xerox WorkCentre Pro 412 @@ -1982,6 +1996,7 @@ 9a10 34UC88-B 9a11 34UC88-B 9a39 27UP850 - WK.AEUDCSN - External Monitor 4K + 9a57 UltraGear Monitor 9c01 LGE Sync 043f RadiSys Corp. 0440 Eizo Nanao Corp. @@ -2007,6 +2022,7 @@ 044d Siemens Nixdorf AG 044e Alps Electric Co., Ltd 1104 Japanese Keyboard + 1218 Electric Touchpad 2002 MD-5500 Printer 2014 Bluetooth Device 3001 UGTZ4 Bluetooth @@ -2737,6 +2753,8 @@ 0180 Strait 3.0 01a4 MC 2.1 Mouse 01a6 MX BOARD 2.0S FL RGB DE Keyboard + 0201 Smart Board 1150 + 0202 Smart Terminal 1150 b090 Keyboard b091 Mouse c099 Stream Keyboard TKL @@ -2851,6 +2869,7 @@ 08dd QuickCam for Notebooks 08e0 QuickCam Express 08e1 Labtec Webcam + 08e4 C505e HD Webcam 08e5 C920 PRO HD Webcam 08f0 QuickCam Messenger 08f1 QuickCam Express @@ -3002,6 +3021,7 @@ c08e G MX518 Gaming Mouse (MU0053) c092 G102/G203 LIGHTSYNC Gaming Mouse c093 M500s Optical Mouse + c09d G102 LIGHTSYNC Gaming Mouse c101 UltraX Media Remote c110 Harmony 785/880/885 Remote c111 Harmony 525 Remote @@ -3060,6 +3080,7 @@ c24d G710 Gaming Keyboard c24e G500s Laser Gaming Mouse c24f G29 Driving Force Racing Wheel [PS3] + c251 GamePanel for Dell XPS M1730 c260 G29 Driving Force Racing Wheel [PS4] c262 G920 Driving Force Racing Wheel c281 WingMan Force @@ -3073,6 +3094,7 @@ c295 Momo Force Steering Wheel c298 Driving Force Pro c299 G25 Racing Wheel + c29a Driving Force GT c29b G27 Racing Wheel c29c Speed Force Wireless Wheel for Wii c2a0 Wingman Force Feedback Mouse @@ -3110,6 +3132,7 @@ c335 G910 Orion Spectrum Mechanical Keyboard c336 G213 Prodigy Gaming Keyboard c33a G413 Gaming Keyboard + c33e G915 Mechanical Keyboard c33f G815 Mechanical Keyboard c401 TrackMan Marble Wheel c402 Marble Mouse (2-button) @@ -3359,6 +3382,7 @@ 047c Dell Computer Corp. ffff UPS Tower 500W LV 047d Kensington + 00f2 VeriMark Desktop 1001 Mouse*in*a*Box 1002 Expert Mouse Pro 1003 Orbit TrackBall @@ -3558,6 +3582,7 @@ 0485 Nokia Monitors 0486 ASUS Computers, Inc. 0185 EeePC T91MT HID Touch Panel + 573c Xreal Light Microcontroller 0487 Stewart Connector 0488 Cirque Corp. 0489 Foxconn / Hon Hai @@ -3663,6 +3688,7 @@ 1033 DGX-505 1037 PSR-E403 103c MOTIF-RACK ES + 1045 MM6 1054 S90XS Keyboard/Music Synthesizer 160f P-105 1613 Clavinova CLP535 @@ -3892,9 +3918,11 @@ 106d S750 Printer 106e S820D 1070 S530D + 1071 Sony MPR-501 1072 I850 Printer 1073 I550 Printer 1074 S330 Printer + 1075 Sony MPR-505 1076 i70 1077 i950 107a S830D @@ -4053,6 +4081,7 @@ 178a PIXMA MG3600 Series 178d PIXMA MG6853 180b PIXMA MG3000 series + 183b PIXMA MG3110 Series 1856 PIXMA TS6250 1900 CanoScan LiDE 90 1901 CanoScan 8800F @@ -4060,6 +4089,7 @@ 1905 CanoScan LiDE 200 1906 CanoScan 5600F 1907 CanoScan LiDE 700F + 1908 CanoScan 9000F 1909 CanoScan LiDE 110 190a CanoScan LiDE 210 190d CanoScan 9000F Mark II @@ -4621,6 +4651,7 @@ 0434 D610 0436 D810 043f D5600 + 0455 Z50II 0f03 PD-10 Wireless Printer Adapter 4000 Coolscan LS 40 ED 4001 LS 50 ED/Coolscan V ED @@ -4907,11 +4938,19 @@ 0891 Stylus Office BX535WD 0892 Stylus Office BX935FWD 0893 EP-774A + 08d1 L220/L360 Series 0e03 Thermal Receipt Printer [TM-T20] + 0e31 Thermal Receipt Printer [TM-L100] 1114 XP-440 [Expression Home Small-in-One Printer] 1115 ES-0133 [Expression Home XP-342] 1129 ET-4750 [WorkForce ET-4750 EcoTank All-in-One] 1168 Workforce WF-7820/7840 Series + 1186 ET-2820 Series [ET-2820 EcoTank All-in-One] + 118a ET-2810/L3250 Series [EcoTank ET-2810/L3250] + 118b ET-2850/L4260 Series [EcoTank ET-2850/L4260] + 11b0 XP-4200 Series [Expression Home XP-4200] + 11b9 ET-2830/L3550 Series [EcoTank ET-2830/L3550] + 11c8 ET-2860/L3270 Series [EcoTank ET-2860/L3270] 04b9 Rainbow Technologies, Inc. 0300 SafeNet USB SuperPro/UltraPro 1000 iKey 1000 Token @@ -4996,6 +5035,9 @@ 1303 i3 Micro Module 1304 i3 Module 1305 i3 Multi Sensing Module + 1400 Javelin Module Recovery + 1401 Javelin Module + 1500 Gas sensor demo board 04c1 U.S. Robotics (3Com) 0020 56K Voice Pro 0022 56K Voice Pro @@ -5034,7 +5076,9 @@ 11f3 fi-6130Z 125a PalmSecure Sensor Device - MP 132e fi-7160 + 1526 PalmSecure-F Pro 159f ScanSnap iX1500 + 15ff Fi-8170 Document Scanner [Ricoh fi-8170: High Performance Desktop Scanner - PFU] 200f Sigma DP2 (Mass Storage) 2010 Sigma DP2 (PictBridge) 201d SATA 3.0 6Gbit/s Adaptor [GROOVY] @@ -5067,6 +5111,7 @@ 300f Atheros AR3012 Bluetooth 3014 Qualcomm Atheros Bluetooth 3015 Qualcomm Atheros QCA9377 Bluetooth + 3802 MediaTek Bluetooth MT7921 7022 HP HD Webcam 7025 HP HD Webcam 7046 TOSHIBA Web Camera - HD @@ -13443,7 +13488,9 @@ 0b0d ProjectLab 0000 CenturyCD 0b0e GN Netcom + 0301 Jabra EVOLVE 20 0305 Jabra EVOLVE Link MS + 030c Jabra EVOLVE 65 0311 Jabra EVOLVE 65 0312 enc060:Buttons Volume up/down/mute + phone [Jabra] 0343 Jabra UC VOICE 150a @@ -13462,6 +13509,11 @@ 2007 GN 2000 Stereo Corded Headset 2456 Jabra SPEAK 810 245e Jabra Link 370 + 248a Jabra Elite 85h + 24b8 Jabra Evolve2 65 + 24bb Jabra Evolve2 85 + 24c9 Jabra Link 380 + 24ca Jabra Link 380 620c Jabra BT620s 9330 Jabra GN9330 Headset a346 Jabra Engage 75 Stereo @@ -15333,6 +15385,12 @@ 0e23 Liou Yuane Enterprise Co., Ltd 0e25 VinChip Systems, Inc. 0e26 J-Phone East Co., Ltd +0e2c Materialise Motion NV + 0012 footscan pressure plate (0.5m) + 0013 footscan pressure plate (1.0m) + 0018 footscan 2D interface box + 0020 footscan pressure plate (1.5m) + 002d footscan heavy duty pressure plate (1.0m) 0e2e Brady Worldwide, Inc. 000b BMP 51 000c BMP 61 diff --git a/share/mk/Makefile b/share/mk/Makefile index 4ab5c8cc314b..0e786b381fe2 100644 --- a/share/mk/Makefile +++ b/share/mk/Makefile @@ -22,6 +22,7 @@ FILES= \ bsd.confs.mk \ bsd.cpu.mk \ bsd.crunchgen.mk \ + bsd.debug.mk \ bsd.dep.mk \ bsd.dirs.mk \ bsd.doc.mk \ diff --git a/share/mk/bsd.README b/share/mk/bsd.README index 4820bf12c72d..85baba7ba117 100644 --- a/share/mk/bsd.README +++ b/share/mk/bsd.README @@ -20,6 +20,7 @@ bsd.compiler.mk - defined based on current compiler bsd.confs.mk - install of configuration files bsd.cpu.mk - sets CPU/arch-related variables (included from sys.mk) bsd.crunchgen.mk - building crunched binaries using crunchgen(1) +bsd.debug.mk - handling debug options for bsd.{prog,lib}.mk bsd.dep.mk - handle Makefile dependencies bsd.dirs.mk - handle directory creation bsd.doc.mk - building troff system documents @@ -258,6 +259,9 @@ MLINKS List of manual page links (using a .1 - .9 suffix). The linked-to file must come first, the linked file second, and there may be multiple pairs. The files are hard-linked. +MANSRC.${MAN:T} Name of source file for an individual manual page. + Defaults to the manual page name. + The include file <bsd.man.mk> includes a file named "../Makefile.inc" if it exists. diff --git a/share/mk/bsd.compat.mk b/share/mk/bsd.compat.mk index 6fa732fd730b..bad68d1ebd8e 100644 --- a/share/mk/bsd.compat.mk +++ b/share/mk/bsd.compat.mk @@ -74,6 +74,7 @@ LIB32WMAKEFLAGS= \ LIB32WMAKEFLAGS+= NM="${XNM}" LIB32WMAKEFLAGS+= OBJCOPY="${XOBJCOPY}" +LIB32WMAKEFLAGS+= STRIPBIN="${XSTRIPBIN}" LIB32DTRACE= ${DTRACE} -32 LIB32_MACHINE_ABI= ${MACHINE_ABI:N*64} long32 ptr32 diff --git a/share/mk/bsd.confs.mk b/share/mk/bsd.confs.mk index 77b573c7e42c..e953e6d978dc 100644 --- a/share/mk/bsd.confs.mk +++ b/share/mk/bsd.confs.mk @@ -22,6 +22,14 @@ buildconfig: ${${group}} all: buildconfig . endif +# Take groups from both CONFGROUPS and CONFGROUPS.yes, to allow syntax like +# CONFGROUPS.${MK_FOO}=FOO. Sort and uniq the list of groups in case of +# duplicates. +.if defined(CONFGROUPS) || defined(CONFGROUPS.yes) +CONFGROUPS:=${CONFGROUPS} ${CONFGROUPS.yes} +CONFGROUPS:=${CONFGROUPS:O:u} +.endif + . for group in ${CONFGROUPS} . if defined(${group}) && !empty(${group}) diff --git a/share/mk/bsd.cpu.mk b/share/mk/bsd.cpu.mk index f6599a0ad802..d11b8994dcd7 100644 --- a/share/mk/bsd.cpu.mk +++ b/share/mk/bsd.cpu.mk @@ -391,21 +391,24 @@ MACHINE_ABI+= soft-float .else MACHINE_ABI+= hard-float .endif -# Currently all 64-bit architectures include 64 in their name (see arch(7)). -.if ${MACHINE_ARCH:M*64*} -MACHINE_ABI+= long64 +# Currently all 64-bit FreeBSD architectures include 64 in their name +# (see arch(7)). We need a special case for cross-building from macOS +# (which uses arm64/arm). +.if ${MACHINE_ARCH:M*64*} || \ + (defined(BOOTSTRAPPING) && ${.MAKE.OS} == "Darwin" && ${MACHINE} == "arm64") +MACHINE_ABI+= long64 .else -MACHINE_ABI+= long32 +MACHINE_ABI+= long32 .endif .if ${MACHINE_ABI:Mlong64} -MACHINE_ABI+= ptr64 +MACHINE_ABI+= ptr64 .else -MACHINE_ABI+= ptr32 +MACHINE_ABI+= ptr32 .endif .if ${MACHINE_ARCH} == "i386" -MACHINE_ABI+= time32 +MACHINE_ABI+= time32 .else -MACHINE_ABI+= time64 +MACHINE_ABI+= time64 .endif .if ${MACHINE_ARCH:Mpowerpc*} && !${MACHINE_ARCH:M*le} MACHINE_ABI+= big-endian diff --git a/share/mk/bsd.debug.mk b/share/mk/bsd.debug.mk new file mode 100644 index 000000000000..cf2fb4356aef --- /dev/null +++ b/share/mk/bsd.debug.mk @@ -0,0 +1,68 @@ +# +# This file configures debug options for compiled targets. It is meant +# to consolidate common logic in bsd.prog.mk and bsd.lib.mk. It should +# not be included directly by Makefiles. +# + +.include <bsd.opts.mk> + +.if ${MK_ASSERT_DEBUG} == "no" +CFLAGS+= -DNDEBUG +# XXX: shouldn't we ensure that !asserts marks potentially unused variables as +# __unused instead of disabling -Werror globally? +MK_WERROR= no +.endif + +# If reproducible build mode is enabled, map the root of the source +# directory to /usr/src and the root of the object directory to +# /usr/obj. +.if ${MK_REPRODUCIBLE_BUILD} != "no" && !defined(DEBUG_PREFIX) +.if defined(SRCTOP) +DEBUG_PREFIX+= ${SRCTOP:S,/$,,}=/usr/src +.endif +.if defined(OBJROOT) +# Strip off compat subdirectories, e.g., /usr/obj/usr/src/amd64.amd64/obj-lib32 +# becomes /usr/obj/usr/src/amd64.amd64, since object files compiled there might +# refer to something outside the root. +DEBUG_PREFIX+= ${OBJROOT:S,/$,,:C,/obj-[^/]*$,,}=/usr/obj +.endif +.endif + +.if defined(DEBUG_PREFIX) +.for map in ${DEBUG_PREFIX} +CFLAGS+= -ffile-prefix-map=${map} +CXXFLAGS+= -ffile-prefix-map=${map} +.endfor +.endif + +.if defined(DEBUG_FLAGS) +CFLAGS+=${DEBUG_FLAGS} +CXXFLAGS+=${DEBUG_FLAGS} + +.if ${MK_CTF} != "no" && ${DEBUG_FLAGS:M-g} != "" +CTFFLAGS+= -g +.endif +.else +STRIP?= -s +.endif + +.if ${MK_DEBUG_FILES} != "no" && empty(DEBUG_FLAGS:M-g) && \ + empty(DEBUG_FLAGS:M-gdwarf*) +.if !${COMPILER_FEATURES:Mcompressed-debug} +CFLAGS+= ${DEBUG_FILES_CFLAGS:N-gz*} +CXXFLAGS+= ${DEBUG_FILES_CFLAGS:N-gz*} +.else +CFLAGS+= ${DEBUG_FILES_CFLAGS} +CXXFLAGS+= ${DEBUG_FILES_CFLAGS} +.endif +CTFFLAGS+= -g +.endif + +_debuginstall: +.if ${MK_DEBUG_FILES} != "no" && defined(DEBUGFILE) +.if defined(DEBUGMKDIR) + ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dbg} -d ${DESTDIR}${DEBUGFILEDIR}/ +.endif + ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dbg} -o ${DEBUGOWN} -g ${DEBUGGRP} -m ${DEBUGMODE} \ + ${DEBUGFILE} ${DESTDIR}${DEBUGFILEDIR}/${DEBUGFILE} +.endif diff --git a/share/mk/bsd.endian.mk b/share/mk/bsd.endian.mk index ba662ffc7439..24da57954b5a 100644 --- a/share/mk/bsd.endian.mk +++ b/share/mk/bsd.endian.mk @@ -20,10 +20,17 @@ LOCALEDEF_ENDIAN= -b # # During bootstrapping on !FreeBSD OSes, we need to define some value. Short of # having an exhaustive list for all variants of Linux and MacOS we simply do not -# set TARGET_ENDIANNESS and poison the other variables. They should be unused -# during the bootstrap phases (apart from one place that's adequately protected -# in bsd.compiler.mk) where we're building the bootstrap tools. +# set TARGET_ENDIANNESS (on Linux) and poison the other variables. They should +# be unused during the bootstrap phases (apart from one place that's adequately +# protected in bsd.compiler.mk) where we're building the bootstrap tools. # +.if ${.MAKE.OS} == "Darwin" +# We do assume the endianness on macOS because Apple's modern hardware is all +# little-endian. This might need revisited in the far future, but for the time +# being Apple Silicon's reign of terror continues. We only set this one up +# because libcrypto is now built in bootstrap. +TARGET_ENDIANNESS= 1234 +.endif CAP_MKDB_ENDIAN= -B # Poisoned value, invalid flags for both cap_mkdb LOCALEDEF_ENDIAN= -B # and localedef. .endif diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk index 3013f32c2b36..e3b3d760ff28 100644 --- a/share/mk/bsd.lib.mk +++ b/share/mk/bsd.lib.mk @@ -1,3 +1,17 @@ +# If INTERNALLIB is defined, we build lib<name>.a and lib<name>_pie.a, +# i.e. only static archives without dso, in both non-PIE and PIE variants, +# suitable for static linking into binaries. +# INTERNALLIB library headers are not installed. A component that uses +# the library should add explicit -I$(LIB<name>DIR) to CFLAGS. +# +# If PRIVATELIB is defined, we build and install both libprivate<name>.a +# and libprivate<name>.so, so the library can be linked dynamically, but +# cannot be picked up by third-party configure scripts. +# PRIVATELIB library headers are installed into include/private/<name>. +# +# If neither of control variables are defined, we install headers into +# include/, and both non-pic static and shared libraries under the defined +# name. .include <bsd.init.mk> .include <bsd.compiler.mk> @@ -45,23 +59,6 @@ SONAME?= ${SHLIB_NAME} CFLAGS+= ${CRUNCH_CFLAGS} .endif -.if ${MK_ASSERT_DEBUG} == "no" -CFLAGS+= -DNDEBUG -# XXX: shouldn't we ensure that !asserts marks potentially unused variables as -# __unused instead of disabling -Werror globally? -MK_WERROR= no -.endif - -.if defined(DEBUG_FLAGS) -CFLAGS+= ${DEBUG_FLAGS} - -.if ${MK_CTF} != "no" && ${DEBUG_FLAGS:M-g} != "" -CTFFLAGS+= -g -.endif -.else -STRIP?= -s -.endif - .for _libcompat in ${_ALL_libcompats} .if ${SHLIBDIR:M*/lib${_libcompat}} || ${SHLIBDIR:M*/lib${_libcompat}/*} TAGS+= lib${_libcompat} @@ -70,11 +67,49 @@ TAGS+= lib${_libcompat} .if defined(NO_ROOT) .if !defined(TAGS) || ! ${TAGS:Mpackage=*} -TAGS+= package=${PACKAGE:Uutilities} +TAGS+= package=${PACKAGE:Uutilities} +.endif + +# By default, if PACKAGE=foo, then the native runtime libraries will go into +# the FreeBSD-foo package, and subpackages will be created for -dev, -lib32, +# and so on. If LIB_PACKAGE is set, then we also create a subpackage for +# runtime libraries with a -lib suffix. This is used when a package has +# libraries and some other content (e.g., executables) to allow consumers to +# depend on the libraries. +.if defined(LIB_PACKAGE) && ! ${TAGS:Mlib*} +.if !defined(PACKAGE) +.error LIB_PACKAGE cannot be used without PACKAGE .endif + +LIB_TAG_ARGS= ${TAG_ARGS},lib +.else +LIB_TAG_ARGS= ${TAG_ARGS} +.endif + TAG_ARGS= -T ${TAGS:ts,:[*]} + +DBG_TAG_ARGS= ${TAG_ARGS},dbg +# Usually we want to put development files (e.g., static libraries) into a +# separate -dev packages but for a few cases, like tests, that's not wanted, +# so allow the caller to disable it by setting NO_DEV_PACKAGE. +.if !defined(NO_DEV_PACKAGE) +DEV_TAG_ARGS= ${TAG_ARGS},dev +.else +DEV_TAG_ARGS= ${TAG_ARGS} .endif +.endif # defined(NO_ROOT) + +# By default, put library manpages in the -dev subpackage, since they're not +# usually interesting if the development files aren't installed. For pages +# that should be installed in the base package, define a new MANNODEV group. +# Note that bsd.man.mk ignores this setting if MANSPLITPKG is enabled: then +# manpages are always installed in the -man subpackage. +MANSUBPACKAGE?= -dev +MANGROUPS?= MAN +MANGROUPS+= MANNODEV +MANNODEVSUBPACKAGE= + # ELF hardening knobs .if ${MK_BIND_NOW} != "no" LDFLAGS+= -Wl,-znow @@ -130,18 +165,6 @@ CXXFLAGS+= -fzero-call-used-regs=${ZEROREG_TYPE} # bsd.sanitizer.mk is not installed, so don't require it (e.g. for ports). .sinclude "bsd.sanitizer.mk" -.if ${MK_DEBUG_FILES} != "no" && empty(DEBUG_FLAGS:M-g) && \ - empty(DEBUG_FLAGS:M-gdwarf*) -.if !${COMPILER_FEATURES:Mcompressed-debug} -CFLAGS+= ${DEBUG_FILES_CFLAGS:N-gz*} -CXXFLAGS+= ${DEBUG_FILES_CFLAGS:N-gz*} -.else -CFLAGS+= ${DEBUG_FILES_CFLAGS} -CXXFLAGS+= ${DEBUG_FILES_CFLAGS} -.endif -CTFFLAGS+= -g -.endif - .if ${MACHINE_CPUARCH} == "riscv" && ${LINKER_FEATURES:Mriscv-relaxations} == "" CFLAGS += -mno-relax .endif @@ -156,6 +179,7 @@ _SHLIBDIR:=${SHLIBDIR} .if defined(SHLIB_NAME) .if ${MK_DEBUG_FILES} != "no" SHLIB_NAME_FULL=${SHLIB_NAME}.full +DEBUGFILE= ${SHLIB_NAME}.debug # Use ${DEBUGDIR} for base system debug files, else .debug subdirectory .if ${_SHLIBDIR} == "/boot" ||\ ${SHLIBDIR:C%/lib(/.*)?$%/lib%} == "/lib" ||\ @@ -272,16 +296,16 @@ ${SHLIB_NAME_FULL}: ${SOBJS} .endif .if ${MK_DEBUG_FILES} != "no" -CLEANFILES+= ${SHLIB_NAME_FULL} ${SHLIB_NAME}.debug -${SHLIB_NAME}: ${SHLIB_NAME_FULL} ${SHLIB_NAME}.debug - ${OBJCOPY} --strip-debug --add-gnu-debuglink=${SHLIB_NAME}.debug \ +CLEANFILES+= ${SHLIB_NAME_FULL} ${DEBUGFILE} +${SHLIB_NAME}: ${SHLIB_NAME_FULL} ${DEBUGFILE} + ${OBJCOPY} --strip-debug --add-gnu-debuglink=${DEBUGFILE} \ ${SHLIB_NAME_FULL} ${.TARGET} .if defined(SHLIB_LINK) && !commands(${SHLIB_LINK:R}.ld) # Note: This uses ln instead of ${INSTALL_LIBSYMLINK} since we are in OBJDIR @${LN:Uln} -fs ${SHLIB_NAME} ${SHLIB_LINK} .endif -${SHLIB_NAME}.debug: ${SHLIB_NAME_FULL} +${DEBUGFILE}: ${SHLIB_NAME_FULL} ${OBJCOPY} --only-keep-debug ${SHLIB_NAME_FULL} ${.TARGET} .endif .endif #defined(SHLIB_NAME) @@ -384,7 +408,7 @@ _SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}} installpcfiles: installpcfiles-${pcfile} installpcfiles-${pcfile}: ${pcfile} - ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${INSTALL} ${DEV_TAG_ARGS} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${_INSTALLFLAGS} \ ${.ALLSRC} ${DESTDIR}${LIBDATADIR}/pkgconfig/ .endfor @@ -392,49 +416,42 @@ installpcfiles-${pcfile}: ${pcfile} installpcfiles: .PHONY .if !defined(INTERNALLIB) -realinstall: _libinstall installpcfiles -.ORDER: beforeinstall _libinstall +realinstall: _libinstall installpcfiles _debuginstall +.ORDER: beforeinstall _libinstall _debuginstall _libinstall: .if defined(LIB) && !empty(LIB) && ${MK_INSTALLLIB} != "no" - ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${INSTALL} ${DEV_TAG_ARGS} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${_INSTALLFLAGS} lib${LIB_PRIVATE}${LIB}${_STATICLIB_SUFFIX}.a ${DESTDIR}${_LIBDIR}/ .endif .if defined(SHLIB_NAME) - ${INSTALL} ${TAG_ARGS} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${INSTALL} ${LIB_TAG_ARGS} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \ ${SHLIB_NAME} ${DESTDIR}${_SHLIBDIR}/ -.if ${MK_DEBUG_FILES} != "no" -.if defined(DEBUGMKDIR) - ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dbg} -d ${DESTDIR}${DEBUGFILEDIR}/ -.endif - ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dbg} -o ${LIBOWN} -g ${LIBGRP} -m ${DEBUGMODE} \ - ${_INSTALLFLAGS} \ - ${SHLIB_NAME}.debug ${DESTDIR}${DEBUGFILEDIR}/ -.endif .if defined(SHLIB_LINK) .if commands(${SHLIB_LINK:R}.ld) - ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -S -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${INSTALL} ${DEV_TAG_ARGS} -S -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${_INSTALLFLAGS} ${SHLIB_LINK:R}.ld \ ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} .for _SHLIB_LINK_LINK in ${SHLIB_LDSCRIPT_LINKS} - ${INSTALL_LIBSYMLINK} ${_SHLINSTALLSYMLINKFLAGS} ${TAG_ARGS} ${SHLIB_LINK} \ - ${DESTDIR}${_LIBDIR}/${_SHLIB_LINK_LINK} + ${INSTALL_LIBSYMLINK} ${_SHLINSTALLSYMLINKFLAGS} ${LIB_TAG_ARGS} \ + ${SHLIB_LINK} ${DESTDIR}${_LIBDIR}/${_SHLIB_LINK_LINK} .endfor .else .if ${_SHLIBDIR} == ${_LIBDIR} .if ${SHLIB_LINK:Mlib*} - ${INSTALL_RSYMLINK} ${_SHLINSTALLSYMLINKFLAGS} ${TAG_ARGS:D${TAG_ARGS},dev} \ + ${INSTALL_RSYMLINK} ${_SHLINSTALLSYMLINKFLAGS} ${DEV_TAG_ARGS} \ ${SHLIB_NAME} ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} .else - ${INSTALL_RSYMLINK} ${_SHLINSTALLSYMLINKFLAGS} ${TAG_ARGS} ${DESTDIR}${_SHLIBDIR}/${SHLIB_NAME} \ + ${INSTALL_RSYMLINK} ${_SHLINSTALLSYMLINKFLAGS} ${LIB_TAG_ARGS} \ + ${DESTDIR}${_SHLIBDIR}/${SHLIB_NAME} \ ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} .endif .else .if ${SHLIB_LINK:Mlib*} - ${INSTALL_RSYMLINK} ${_SHLINSTALLSYMLINKFLAGS} ${TAG_ARGS:D${TAG_ARGS},dev} \ + ${INSTALL_RSYMLINK} ${_SHLINSTALLSYMLINKFLAGS} ${DEV_TAG_ARGS} \ ${DESTDIR}${_SHLIBDIR}/${SHLIB_NAME} ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} .else - ${INSTALL_RSYMLINK} ${_SHLINSTALLSYMLINKFLAGS} ${TAG_ARGS} \ + ${INSTALL_RSYMLINK} ${_SHLINSTALLSYMLINKFLAGS} ${LIB_TAG_ARGS} \ ${DESTDIR}${_SHLIBDIR}/${SHLIB_NAME} ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} .endif .if exists(${DESTDIR}${_LIBDIR}/${SHLIB_NAME}) @@ -446,7 +463,7 @@ _libinstall: .endif # SHLIB_LINK .endif # SHIB_NAME .if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) - ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${INSTALL} ${DEV_TAG_ARGS} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${_LIBDIR}/ .endif .endif # !defined(INTERNALLIB) @@ -466,7 +483,11 @@ LINKGRP?= ${LIBGRP} LINKMODE?= ${LIBMODE} SYMLINKOWN?= ${LIBOWN} SYMLINKGRP?= ${LIBGRP} -LINKTAGS= dev +.if !defined(NO_DEV_PACKAGE) +LINKTAGS= dev${_COMPAT_TAG} +.else +LINKTAGS= ${_COMPAT_TAG} +.endif .include <bsd.links.mk> .if ${MK_MAN} != "no" && !defined(LIBRARIES_ONLY) @@ -501,6 +522,7 @@ SUBDIR_TARGETS+= check TESTS_LD_LIBRARY_PATH+= ${.OBJDIR} .endif +.include <bsd.debug.mk> .include <bsd.dep.mk> .include <bsd.clang-analyze.mk> .include <bsd.obj.mk> diff --git a/share/mk/bsd.libnames.mk b/share/mk/bsd.libnames.mk index 3ff4c4e90a1b..2f099e0579b2 100644 --- a/share/mk/bsd.libnames.mk +++ b/share/mk/bsd.libnames.mk @@ -27,6 +27,7 @@ LIBAVL?= ${LIBDESTDIR}${LIBDIR_BASE}/libavl.a LIBBE?= ${LIBDESTDIR}${LIBDIR_BASE}/libbe.a LIBBEGEMOT?= ${LIBDESTDIR}${LIBDIR_BASE}/libbegemot.a LIBBLACKLIST?= ${LIBDESTDIR}${LIBDIR_BASE}/libblacklist.a +LIBBLOCKLIST?= ${LIBDESTDIR}${LIBDIR_BASE}/libblocklist.a LIBBLOCKSRUNTIME?= ${LIBDESTDIR}${LIBDIR_BASE}/libBlocksRuntime.a LIBBLUETOOTH?= ${LIBDESTDIR}${LIBDIR_BASE}/libbluetooth.a LIBBSDXML?= ${LIBDESTDIR}${LIBDIR_BASE}/libbsdxml.a diff --git a/share/mk/bsd.man.mk b/share/mk/bsd.man.mk index f44048b4e453..dde11afb8283 100644 --- a/share/mk/bsd.man.mk +++ b/share/mk/bsd.man.mk @@ -21,6 +21,9 @@ # MAN The manual pages to be installed. For sections see # variable ${SECTIONS} # +# MANSRC.${MAN:T} Name of source file for an individual manual page. +# Defaults to the manual page name. +# # MCOMPRESS_CMD Program to compress man pages. Output is to # stdout. [${COMPRESS_CMD}] # @@ -58,6 +61,16 @@ MANGROUPS?= MAN +# MAN_SUBPACKAGE is the subpackage manpages will be installed in. When +# MANSPLITPKG is enabled, this is ignored and the subpackage is forced +# to be "-man", otherwise it defaults to empty so manpages go in the +# base package. This can be set to "-dev" for manpages that should go +# in the -dev package. +MAN_SUBPACKAGE?= + +# The default man package, if not otherwise specified. +MAN_PACKAGE= ${PACKAGE:Uutilities} + # Backwards compatibility. MINSTALL?= ${MANINSTALL} @@ -94,6 +107,14 @@ manlinksinstall: .PHONY all-man: +# Take groups from both MANGROUPS and MANGROUPS.yes, to allow syntax like +# MANGROUPS.${MK_FOO}=FOO. Sort and uniq the list of groups in case of +# duplicates. +.if defined(MANGROUPS) || defined(MANGROUPS.yes) +MANGROUPS:=${MANGROUPS} ${MANGROUPS.yes} +MANGROUPS:=${MANGROUPS:O:u} +.endif + .for __group in ${MANGROUPS} realmaninstall: realmaninstall-${__group} @@ -102,16 +123,19 @@ manlinksinstall: manlinksinstall-${__group} ${__group}OWN?= ${MANOWN} ${__group}GRP?= ${MANGRP} ${__group}MODE?= ${MANMODE} +# If MANSPLITPKG is enabled, ignore the requested man subpackage and put the +# manpages in -man instead. +.if ${MK_MANSPLITPKG} == "yes" +${__group}SUBPACKAGE= -man +.else +${__group}SUBPACKAGE?= ${MAN_SUBPACKAGE} +.endif +${__group}PACKAGE?= ${MAN_PACKAGE}${${__group}SUBPACKAGE} # Tag processing is only done for NO_ROOT installs. .if defined(NO_ROOT) - .if !defined(${__group}TAGS) || ! ${${__group}TAGS:Mpackage=*} -.if ${MK_MANSPLITPKG} == "no" -${__group}TAGS+= package=${${__group}PACKAGE:U${PACKAGE:Uutilities}} -.else -${__group}TAGS+= package=${${__group}PACKAGE:U${PACKAGE:Uutilities}}-man -.endif +${__group}TAGS+= package=${${__group}PACKAGE} .endif ${__group}TAG_ARGS= -T ${${__group}TAGS:ts,:[*]} @@ -141,13 +165,13 @@ CLEANFILES+= ${${__group}:T:S/$/${CATEXT}${FILTEXTENSION}/g} # filenames contain colons. .for __target in ${__page:T:S/:/\:/g:S/$/${FILTEXTENSION}/g} all-man: ${__target} -${__target}: ${__page} +${__target}: ${MANSRC.${__page:T}:U${__page}} ${MANFILTER} < ${.ALLSRC} > ${.TARGET} .endfor .if defined(MANBUILDCAT) && !empty(MANBUILDCAT) .for __target in ${__page:T:S/:/\:/g:S/$/${CATEXT}${FILTEXTENSION}/g} all-man: ${__target} -${__target}: ${__page} +${__target}: ${MANSRC.${__page:T}:U${__page}} ${MANFILTER} < ${.ALLSRC} | ${MANDOC_CMD} > ${.TARGET} .endfor .endif @@ -160,12 +184,23 @@ CLEANFILES+= ${${__group}:T:S/$/${CATEXT}/g} .for __page in ${${__group}} .for __target in ${__page:T:S/:/\:/g:S/$/${CATEXT}/g} all-man: ${__target} -${__target}: ${__page} +${__target}: ${MANSRC.${__page:T}:U${__page}} ${MANDOC_CMD} ${.ALLSRC} > ${.TARGET} .endfor .endfor .else -all-man: ${${__group}} +.for __page in ${${__group}} +.if defined(MANSRC.${__page:T}) +.for __target in ${__page:T:S/:/\:/g} +all-man: ${__target} +CLEANFILES+= ${__target} +${__target}: ${MANSRC.${__page:T}} + ${CP} ${.ALLSRC} ${.TARGET} +.endfor +.else +all-man: ${__page} +.endif +.endfor .endif .endif .endif # defined(MANFILTER) @@ -180,7 +215,7 @@ CLEANFILES+= ${${__group}:T:S/$/${CATEXT}${MCOMPRESS_EXT}/g} .for __page in ${${__group}} .for __target in ${__page:T:S/:/\:/g:S/$/${MCOMPRESS_EXT}/} all-man: ${__target} -${__target}: ${__page} +${__target}: ${MANSRC.${__page:T}:U${__page}} .if defined(MANFILTER) ${MANFILTER} < ${.ALLSRC} | ${MCOMPRESS_CMD} > ${.TARGET} .else @@ -190,7 +225,7 @@ ${__target}: ${__page} .if defined(MANBUILDCAT) && !empty(MANBUILDCAT) .for __target in ${__page:T:S/:/\:/g:S/$/${CATEXT}${MCOMPRESS_EXT}/} all-man: ${__target} -${__target}: ${__page} +${__target}: ${MANSRC.${__page:T}:U${__page}} .if defined(MANFILTER) ${MANFILTER} < ${.ALLSRC} | ${MANDOC_CMD} | ${MCOMPRESS_CMD} > ${.TARGET} .else @@ -238,7 +273,10 @@ stage_links.mlinks.${__group}: ${_mansets.${__group}:@s@stage_files.${__group}.$ realmaninstall-${__group}: .if defined(${__group}) && !empty(${__group}) -realmaninstall-${__group}: ${${__group}} +.for __page in ${${__group}} +__mansrc.${__group}+= ${MANSRC.${__page:T}:U${__page}} +.endfor +realmaninstall-${__group}: ${__mansrc.${__group}} .if ${MK_MANCOMPRESS} == "no" .if defined(MANFILTER) .for __page in ${${__group}} @@ -288,11 +326,11 @@ manlinksinstall-${__group}: .endif .endfor -manlint: +manlint: .PHONY checkmanlinks .if defined(${__group}) && !empty(${__group}) .for __page in ${${__group}} manlint: ${__page:S/:/\:/g}lint -${__page:S/:/\:/g}lint: ${__page} +${__page:S/:/\:/g}lint: .PHONY ${MANSRC.${__page:T}:U${__page}} .if defined(MANFILTER) ${MANFILTER} < ${.ALLSRC} | ${MANDOC_CMD} -Tlint .else @@ -301,4 +339,18 @@ ${__page:S/:/\:/g}lint: ${__page} .endfor .endif +checkmanlinks: .PHONY +.if defined(${__group}LINKS) +checkmanlinks: checkmanlinks-${__group} +checkmanlinks-${__group}: .PHONY +.for __page __link in ${${__group}LINKS} +checkmanlinks-${__group}: checkmanlinks-${__group}-${__link} +checkmanlinks-${__group}-${__link}: .PHONY ${__page} + @if ! egrep -q "^(\.\\\\\" )?\.Nm ${__link:R}( ,)?$$" ${.ALLSRC}; then \ + echo "${__group}LINKS: '.Nm ${__link:R}' not found in ${__page}"; \ + exit 1; \ + fi >&2 +.endfor # __page __link in ${${__group}LINKS} +.endif # defined(${__group}LINKS) + .endfor # __group in ${MANGROUPS} diff --git a/share/mk/bsd.nls.mk b/share/mk/bsd.nls.mk index bd13fe56679d..5a28e1cdd026 100644 --- a/share/mk/bsd.nls.mk +++ b/share/mk/bsd.nls.mk @@ -1,6 +1,8 @@ # -# This include file <bsd.nls.mk> handles building and installing Native -# Language Support (NLS) catalogs +# Handle building and installing Native Language Support (NLS) catalogs. +# This is implemented using a <bsd.files.mk> files group called "NLS", +# so any per-group options that bsd.files.mk supports can be used here +# with the prefix "NLS". # # +++ variables +++ # @@ -17,6 +19,9 @@ # NLSMODE National Language Support files mode. [${NOBINMODE}] # # NLSOWN National Language Support files owner. [${SHAREOWN}] +# +# NLSPACKAGE Package to install the NLS files in. +# [${PACKAGE}, or "utilities" if not set] .if !target(__<bsd.init.mk>__) .error bsd.nls.mk cannot be included directly. diff --git a/share/mk/bsd.opts.mk b/share/mk/bsd.opts.mk index 85247d733a14..66eb427c3505 100644 --- a/share/mk/bsd.opts.mk +++ b/share/mk/bsd.opts.mk @@ -60,7 +60,6 @@ __DEFAULT_YES_OPTIONS = \ MAKE_CHECK_USE_SANDBOX \ MAN \ MANCOMPRESS \ - MANSPLITPKG \ NIS \ NLS \ OPENSSH \ @@ -78,6 +77,8 @@ __DEFAULT_NO_OPTIONS = \ CCACHE_BUILD \ CTF \ INSTALL_AS_USER \ + MANSPLITPKG \ + REPRODUCIBLE_BUILD \ RETPOLINE \ RUN_TESTS \ STALE_STAGED \ diff --git a/share/mk/bsd.own.mk b/share/mk/bsd.own.mk index 00a048fedc1d..4dffe9723a9e 100644 --- a/share/mk/bsd.own.mk +++ b/share/mk/bsd.own.mk @@ -44,6 +44,10 @@ # # DEBUGMODE Mode for debug files. [${NOBINMODE}] # +# DEBUGOWN Owner for debug info files. [root] +# +# DEBUGGRP Group for debug info files. [wheel] +# # # KMODDIR Base path for loadable kernel modules # (see kld(4)). [/boot/modules] @@ -197,7 +201,8 @@ LIBMODE?= ${NOBINMODE} DEBUGDIR?= /usr/lib/debug DEBUGMODE?= ${NOBINMODE} - +DEBUGOWN?= ${BINOWN} +DEBUGGRP?= ${BINGRP} # Share files SHAREDIR?= /usr/share diff --git a/share/mk/bsd.prog.mk b/share/mk/bsd.prog.mk index 9350d4786cec..5697845079e2 100644 --- a/share/mk/bsd.prog.mk +++ b/share/mk/bsd.prog.mk @@ -12,22 +12,6 @@ CFLAGS+=${COPTS} .endif -.if ${MK_ASSERT_DEBUG} == "no" -CFLAGS+= -DNDEBUG -# XXX: shouldn't we ensure that !asserts marks potentially unused variables as -# __unused instead of disabling -Werror globally? -MK_WERROR= no -.endif - -.if defined(DEBUG_FLAGS) -CFLAGS+=${DEBUG_FLAGS} -CXXFLAGS+=${DEBUG_FLAGS} - -.if ${MK_CTF} != "no" && ${DEBUG_FLAGS:M-g} != "" -CTFFLAGS+= -g -.endif -.endif - .if defined(PROG_CXX) PROG= ${PROG_CXX} .endif @@ -65,9 +49,11 @@ CXXFLAGS+= -mretpoline LDFLAGS+= -Wl,-zretpolineplt .endif .else +.if !defined(_NO_INCLUDE_COMPILERMK) .warning Retpoline requested but not supported by compiler or linker .endif .endif +.endif # LLD sensibly defaults to -znoexecstack, so do the same for BFD LDFLAGS.bfd+= -Wl,-znoexecstack .if ${MK_BRANCH_PROTECTION} != "no" @@ -87,9 +73,11 @@ CFLAGS+= -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clan CXXFLAGS+= -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang .endif .else +.if !defined(_NO_INCLUDE_COMPILERMK) .warning INIT_ALL (${OPT_INIT_ALL}) requested but not supported by compiler .endif .endif +.endif # Zero used registers on return (mitigate some ROP) .if ${MK_ZEROREGS} != "no" @@ -109,20 +97,6 @@ CFLAGS += -mno-relax .if defined(CRUNCH_CFLAGS) CFLAGS+=${CRUNCH_CFLAGS} -.else -.if ${MK_DEBUG_FILES} != "no" && empty(DEBUG_FLAGS:M-g) && \ - empty(DEBUG_FLAGS:M-gdwarf-*) -.if !${COMPILER_FEATURES:Mcompressed-debug} -CFLAGS+= ${DEBUG_FILES_CFLAGS:N-gz*} -.else -CFLAGS+= ${DEBUG_FILES_CFLAGS} -.endif -CTFFLAGS+= -g -.endif -.endif - -.if !defined(DEBUG_FLAGS) -STRIP?= -s .endif .if defined(NO_ROOT) @@ -159,6 +133,9 @@ PROG_FULL= ${PROG} .if defined(PROG) PROGNAME?= ${PROG} +.if ${MK_DEBUG_FILES} != "no" +DEBUGFILE= ${PROGNAME}.debug +.endif .if defined(SRCS) @@ -223,11 +200,12 @@ ${PROG_FULL}: ${OBJS} .endif # !defined(SRCS) .if ${MK_DEBUG_FILES} != "no" -${PROG}: ${PROG_FULL} ${PROGNAME}.debug - ${OBJCOPY} --strip-debug --add-gnu-debuglink=${PROGNAME}.debug \ +CLEANFILES+= ${PROG_FULL} ${DEBUGFILE} +${PROG}: ${PROG_FULL} ${DEBUGFILE} + ${OBJCOPY} --strip-debug --add-gnu-debuglink=${DEBUGFILE} \ ${PROG_FULL} ${.TARGET} -${PROGNAME}.debug: ${PROG_FULL} +${DEBUGFILE}: ${PROG_FULL} ${OBJCOPY} --only-keep-debug ${PROG_FULL} ${.TARGET} .endif @@ -266,9 +244,6 @@ all: all-man .if defined(PROG) CLEANFILES+= ${PROG} ${PROG}.bc ${PROG}.ll -.if ${MK_DEBUG_FILES} != "no" -CLEANFILES+= ${PROG_FULL} ${PROGNAME}.debug -.endif .endif .if defined(OBJS) @@ -308,19 +283,12 @@ _INSTALLFLAGS:= ${_INSTALLFLAGS${ie}} .endfor .if !target(realinstall) && !defined(INTERNALPROG) -realinstall: _proginstall -.ORDER: beforeinstall _proginstall +realinstall: _proginstall _debuginstall +.ORDER: beforeinstall _proginstall _debuginstall _proginstall: .if defined(PROG) ${INSTALL} ${TAG_ARGS} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}/${PROGNAME} -.if ${MK_DEBUG_FILES} != "no" -.if defined(DEBUGMKDIR) - ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dbg} -d ${DESTDIR}${DEBUGFILEDIR}/ -.endif - ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dbg} -o ${BINOWN} -g ${BINGRP} -m ${DEBUGMODE} \ - ${PROGNAME}.debug ${DESTDIR}${DEBUGFILEDIR}/${PROGNAME}.debug -.endif .endif .endif # !target(realinstall) @@ -391,6 +359,7 @@ TESTS_PATH+= ${.OBJDIR} OBJS_DEPEND_GUESS+= ${SRCS:M*.h} .endif +.include <bsd.debug.mk> .include <bsd.dep.mk> .include <bsd.clang-analyze.mk> .include <bsd.obj.mk> diff --git a/share/mk/bsd.test.mk b/share/mk/bsd.test.mk index a2e15c840e02..9f20e5835369 100644 --- a/share/mk/bsd.test.mk +++ b/share/mk/bsd.test.mk @@ -16,6 +16,9 @@ LOCALBASE?= /usr/local TESTSDIR?= ${TESTSBASE}/${RELDIR:H} PACKAGE?= tests +# Prevent creating a -dev package for tests. Sometimes tests include static +# libraries or other artifacts which are not actually "development" files. +NO_DEV_PACKAGE= FILESGROUPS+= ${PACKAGE}FILES ${PACKAGE}FILESPACKAGE= ${PACKAGE} diff --git a/share/mk/local.dirdeps-options.mk b/share/mk/local.dirdeps-options.mk index 4eef5311375e..5773c4979e56 100644 --- a/share/mk/local.dirdeps-options.mk +++ b/share/mk/local.dirdeps-options.mk @@ -2,6 +2,7 @@ # avoid duplication DIRDEPS.AUDIT.yes= lib/libbsm DIRDEPS.BLACKLIST_SUPPORT.yes+= lib/libblacklist +DIRDEPS.BLOCKLIST_SUPPORT.yes+= lib/libblocklist DIRDEPS.CASPER.yes+= lib/libcasper/libcasper DIRDEPS.GSSAPI.yes+= lib/libgssapi DIRDEPS.JAIL.yes+= lib/libjail diff --git a/share/mk/local.dirdeps.mk b/share/mk/local.dirdeps.mk index a92539689a31..bdc7242d4bfd 100644 --- a/share/mk/local.dirdeps.mk +++ b/share/mk/local.dirdeps.mk @@ -185,7 +185,7 @@ C_DIRDEPS= \ # libgcc is needed as well but is added later. -.if ${MK_GSSAPI} != "no" +.if ${MK_KERBEROS} != "no" && ${MK_MITKRB5} == "no" C_DIRDEPS+= include/gssapi .endif diff --git a/share/mk/src.libnames.mk b/share/mk/src.libnames.mk index 9ca043e7733c..fd0424a96d9b 100644 --- a/share/mk/src.libnames.mk +++ b/share/mk/src.libnames.mk @@ -29,6 +29,8 @@ _PRIVATELIBS= \ heimipcs \ kldelf \ ldns \ + opencsd \ + samplerate \ sqlite3 \ ssh \ ucl \ @@ -72,7 +74,6 @@ _INTERNALLIBS= \ pfctl \ pkgecc \ pmcstat \ - samplerate \ sl \ sm \ smdb \ @@ -264,8 +265,12 @@ _LIBRARIES+= \ .if ${MK_BLACKLIST} != "no" _LIBRARIES+= \ - blacklist \ + blacklist +.endif +.if ${MK_BLOCKLIST} != "no" +_LIBRARIES+= \ + blocklist .endif .if ${MK_OFED} != "no" @@ -319,6 +324,9 @@ _DP_zstd= pthread .if ${MK_BLACKLIST} != "no" _DP_blacklist+= pthread .endif +.if ${MK_BLOCKLIST} != "no" +_DP_blocklist+= pthread +.endif _DP_crypto= pthread # See comment by _DP_archive above .if ${.MAKE.OS} == "FreeBSD" || !defined(BOOTSTRAPPING) @@ -329,7 +337,7 @@ _DP_archive+= md .endif .endif _DP_sqlite3= pthread -_DP_ssl= crypto +_DP_ssl= pthread crypto _DP_ssh= crypto crypt z .if ${MK_LDNS} != "no" _DP_ssh+= ldns @@ -425,7 +433,7 @@ _DP_kadm5clnt= com_err krb5 roken _DP_kadm5srv= com_err hdb krb5 roken _DP_heimntlm= crypto com_err krb5 roken _DP_hx509= asn1 com_err crypto roken wind -_DP_hdb= asn1 com_err krb5 roken sqlite3 +_DP_hdb= asn1 com_err krb5 roken sqlite3 heimbase _DP_asn1= com_err roken _DP_kdc= roken hdb hx509 krb5 heimntlm asn1 crypto _DP_wind= com_err roken @@ -865,6 +873,7 @@ LIBGTESTDIR= ${_LIB_OBJTOP}/lib/googletest/gtest LIBGTEST_MAINDIR= ${_LIB_OBJTOP}/lib/googletest/gtest_main LIBALIASDIR= ${_LIB_OBJTOP}/lib/libalias/libalias LIBBLACKLISTDIR= ${_LIB_OBJTOP}/lib/libblacklist +LIBBLOCKLISTDIR= ${_LIB_OBJTOP}/lib/libblocklist LIBBLOCKSRUNTIMEDIR= ${_LIB_OBJTOP}/lib/libblocksruntime LIBBSNMPDIR= ${_LIB_OBJTOP}/lib/libbsnmp/libbsnmp LIBCASPERDIR= ${_LIB_OBJTOP}/lib/libcasper/libcasper diff --git a/share/mk/src.opts.mk b/share/mk/src.opts.mk index 6000da865332..e10455cd4e82 100644 --- a/share/mk/src.opts.mk +++ b/share/mk/src.opts.mk @@ -66,6 +66,7 @@ __DEFAULT_YES_OPTIONS = \ AUTOFS \ BHYVE \ BLACKLIST \ + BLOCKLIST \ BLUETOOTH \ BOOT \ BOOTPARAMD \ @@ -80,7 +81,6 @@ __DEFAULT_YES_OPTIONS = \ CDDL \ CLANG \ CLANG_BOOTSTRAP \ - CLEAN \ CPP \ CROSS_COMPILER \ CRYPT \ @@ -201,6 +201,7 @@ __DEFAULT_NO_OPTIONS = \ BHYVE_SNAPSHOT \ CLANG_EXTRAS \ CLANG_FORMAT \ + CLEAN \ DIALOG \ DETECT_TZ_CHANGES \ DISK_IMAGE_TOOLS_BOOTSTRAP \ @@ -214,7 +215,6 @@ __DEFAULT_NO_OPTIONS = \ MALLOC_PRODUCTION \ OFED_EXTRA \ OPENLDAP \ - REPRODUCIBLE_BUILD \ RPCBIND_WARMSTART_SUPPORT \ SORT_THREADS \ ZONEINFO_LEAPSECONDS_SUPPORT \ @@ -243,6 +243,7 @@ __LIBC_MALLOC_DEFAULT= jemalloc # .for var in \ BLACKLIST \ + BLOCKLIST \ BZIP2 \ INET \ INET6 \ @@ -296,12 +297,12 @@ __DEFAULT_NO_OPTIONS+=LLVM_TARGET_BPF LLVM_TARGET_MIPS .include <bsd.compiler.mk> .if ${__T} == "i386" || ${__T} == "amd64" -__DEFAULT_NO_OPTIONS += FDT +__DEFAULT_NO_OPTIONS+=FDT .else -__DEFAULT_YES_OPTIONS += FDT +__DEFAULT_YES_OPTIONS+=FDT .endif -.if ${__T:Marm*} == "" && ${__T:Mriscv64*} == "" +.if ${__T:Mriscv64*} == "" __DEFAULT_YES_OPTIONS+=LLDB .else __DEFAULT_NO_OPTIONS+=LLDB @@ -392,6 +393,14 @@ MK_SOURCELESS_HOST:= no MK_SOURCELESS_UCODE:= no .endif +.if ${MK_BLACKLIST} == "no" +MK_BLOCKLIST:= no +.endif + +.if ${MK_BLACKLIST_SUPPORT} == "no" +MK_BLOCKLIST_SUPPORT:= no +.endif + .if ${MK_CDDL} == "no" MK_CTF:= no MK_DTRACE:= no @@ -508,7 +517,7 @@ MK_LOADER_VERIEXEC_PASS_MANIFEST := no # MK_* options whose default value depends on another option. # .for vv in \ - GSSAPI/KERBEROS \ + KERBEROS_SUPPORT/KERBEROS \ MAN_UTILS/MAN .if defined(WITH_${vv:H}) MK_${vv:H}:= yes @@ -519,8 +528,4 @@ MK_${vv:H}:= ${MK_${vv:T}} .endif .endfor -# -# Set defaults for the MK_*_SUPPORT variables. -# - .endif # !target(__<src.opts.mk>__) diff --git a/share/mk/src.sys.mk b/share/mk/src.sys.mk index d5c2af0c559d..6d6523f24754 100644 --- a/share/mk/src.sys.mk +++ b/share/mk/src.sys.mk @@ -6,7 +6,11 @@ .if !defined(_WITHOUT_SRCCONF) # Allow user to configure things that only effect src tree builds. +.if exists(${SRCTOP}/src.conf) +SRCCONF?= ${SRCTOP}/src.conf +.else SRCCONF?= /etc/src.conf +.endif .if !empty(SRCCONF) && \ (exists(${SRCCONF}) || ${SRCCONF} != "/etc/src.conf") && \ !target(_srcconf_included_) @@ -42,7 +46,10 @@ CFLAGS+= ${CFCOMMONFLAG} CFLAGS+= -fmacro-prefix-map=${SRCTOP}=/usr/src -fdebug-prefix-map=${SRCTOP}=/usr/src .endif -DEFAULTWARNS= 6 +DEFAULTWARNS?= 6 + +# ZFS source directory +ZFSTOP?= ${SRCTOP}/sys/contrib/openzfs # tempting, but bsd.compiler.mk causes problems this early # probably need to remove dependence on bsd.own.mk diff --git a/share/sendmail/Makefile b/share/sendmail/Makefile index b6b4d2ec726c..db868b7b33b9 100644 --- a/share/sendmail/Makefile +++ b/share/sendmail/Makefile @@ -6,8 +6,8 @@ FILESGROUPS+= SM SENDMAIL_DIR= ${SRCTOP}/contrib/sendmail CFDIR= cf CFPACKAGE= sendmail -CFDIRS!= (cd ${SENDMAIL_DIR}; find -L ${CFDIR} \( \( -name CVS -o -name .svn \) -prune \) -o -type d -print) -CFFILES!= (cd ${SENDMAIL_DIR}; find -L ${CFDIR} \( \( -name CVS -o -name .svn \) -prune \) -o -type f -print) +CFDIRS!= (cd ${SENDMAIL_DIR}; find -s -L ${CFDIR} \( \( -name CVS -o -name .svn \) -prune \) -o -type d -print) +CFFILES!= (cd ${SENDMAIL_DIR}; find -s -L ${CFDIR} \( \( -name CVS -o -name .svn \) -prune \) -o -type f -print) SMFILES= ${CFFILES} SMFILESDIR= ${DDIR} diff --git a/share/tabset/Makefile b/share/tabset/Makefile index fe7519084716..4da1a3650888 100644 --- a/share/tabset/Makefile +++ b/share/tabset/Makefile @@ -1,3 +1,5 @@ +PACKAGE= ncurses-lib + FILES= 3101 9837 aa aed512 beehive diablo dtc382 hp700-wy ibm3101 std \ stdcrt tandem653 teleray vt100 vt100-w wyse-adds xerox1720 xerox1730 \ xerox1730-lm zenith29 diff --git a/share/termcap/Makefile b/share/termcap/Makefile index 34ad41fd520a..603b098e4de1 100644 --- a/share/termcap/Makefile +++ b/share/termcap/Makefile @@ -1,10 +1,13 @@ # reorder gives an editor command for most common terminals # (in reverse order from n'th to 1'st most commonly used) # to move them to the front of termcap -# -MAN= termcap.5 -PACKAGE= runtime +MAN= termcap.5 +MANPACKAGE= ncurses + +# Note: This is in ncurses-lib rather than ncurses because without it, ncurses +# doesn't work, and the base ncurses package is optional. +PACKAGE= ncurses-lib FILES= termcap termcap.db FILESDIR= ${BINDIR}/misc CLEANFILES+= termcap.db @@ -16,7 +19,7 @@ termcap.db: termcap ${CAP_MKDB_CMD} ${CAP_MKDB_ENDIAN} -f ${.TARGET:R} ${.ALLSRC} etc-termcap: - ${INSTALL_SYMLINK} -T "package=runtime" \ + ${INSTALL_SYMLINK} -T "package=ncurses-lib" \ ${BINDIR}/misc/termcap ${DESTDIR}/etc/termcap .include <bsd.prog.mk> diff --git a/share/vt/fonts/gallant.hex b/share/vt/fonts/gallant.hex index 5f45c3d116f4..57a63150954e 100644 --- a/share/vt/fonts/gallant.hex +++ b/share/vt/fonts/gallant.hex @@ -225,8 +225,8 @@ 00ff:0000000000001980198000000000f0f0602030403040188018800d000d000600060004000c00080078007000 0100:1f801f800000060006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 0101:0000000000000fc00fc0000000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 -0102:1b001b000e00060006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 -0103:000000000d800d800700000000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +0102:198019800f00060006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +0103:000000000cc00cc00780000000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 0104:000000000000060006000b000b0009001180118010803fc020c0204040604060e0f000c00180030001e00000 0105:00000000000000000000000000000f8018c010c003c01cc030c030c030c039c01ee000c00180030001e00000 0106:030006000c000fc01060202020006000600060006000600060002000302018400f8000000000000000000000 @@ -243,8 +243,8 @@ 0111:00000000006000e0006007f000600f6031e020e0606060606060606070e039601e7000000000000000000000 0112:1f801f8000007fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 0113:0000000000001f801f80000000000f0030c0606060607fe060006000300018600f8000000000000000000000 -0114:0d800d8007007fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 -0115:000000000d800d800700000000000f0030c0606060607fe060006000300018600f8000000000000000000000 +0114:0cc00cc007807fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +0115:000000000cc00cc00780000000000f0030c0606060607fe060006000300018600f8000000000000000000000 0116:0600060000007fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 0117:00000000000000000600060000000f0030c0606060607fe060006000300018600f8000000000000000000000 0118:0000000000007fc0304030403000300030803f803080300030003000302030207fe000c00180030001e00000 @@ -253,8 +253,8 @@ 011b:0000000018c00d800700020000000f0030c0606060607fe060006000300018600f8000000000000000000000 011c:07000d8000000fc0106020202000600060006000600061f060602060306018600f8000000000000000000000 011d:00000000020007000d8018c000001f2031e060c060c060c031803f0060007fc03fe02060402040207fc03f80 -011e:0d800d8007000fc0106020202000600060006000600061f060602060306018600f8000000000000000000000 -011f:000000001b001b000e00000000001f2031e060c060c060c031803f0060007fc03fe02060402040207fc03f80 +011e:0cc00cc007800fc0106020202000600060006000600061f060602060306018600f8000000000000000000000 +011f:00000000198019800f00000000001f2031e060c060c060c031803f0060007fc03fe02060402040207fc03f80 0120:0300030000000fc0106020202000600060006000600061f060602060306018600f8000000000000000000000 0121:00000000000000000600060000001f2031e060c060c060c031803f0060007fc03fe02060402040207fc03f80 0122:0000000000000fc0106020202000600060006000600061f060602060306018600f800600030001800f000000 @@ -268,7 +268,7 @@ 012a:1f801f8000001f800600060006000600060006000600060006000600060006001f8000000000000000000000 012b:0000000000001f801f80000000001e00060006000600060006000600060006001f8000000000000000000000 012c:198019800f001f800600060006000600060006000600060006000600060006001f8000000000000000000000 -012d:000000001b001b000e00000000001e00060006000600060006000600060006001f8000000000000000000000 +012d:00000000198019800f00000000001e00060006000600060006000600060006001f8000000000000000000000 012e:0000000000001f800600060006000600060006000600060006000600060006001f8006000c0018000f000000 012f:00000000000006000600000000001e00060006000600060006000600060006001f8006000c0018000f000000 0130:0600060000001f800600060006000600060006000600060006000600060006001f8000000000000000000000 @@ -301,8 +301,8 @@ 014b:0000000000000000000000000000278079c030c030c030c030c030c030c030c078c000c000c0008007000600 014c:1f801f8000000f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 014d:0000000000001f801f80000000000f8011c020e06060606060606060704038801f0000000000000000000000 -014e:0d800d8007000f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 -014f:0000000000000d800d80070000000f8011c020e06060606060606060704038801f0000000000000000000000 +014e:0cc00cc007800f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 +014f:0000000000000cc00cc0078000000f8011c020e06060606060606060704038801f0000000000000000000000 0150:036006c00d800f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 0151:00000000000006c00d801b0000000f8011c020e06060606060606060704038801f0000000000000000000000 0152:0000000000001fe0262046204600c600c610c7f0c610c600c6004600661036101ff000000000000000000000 @@ -331,8 +331,8 @@ 0169:0000000000000e401fc01380000079e030c030c030c030c030c030c030c039c01e6000000000000000000000 016a:1f801f800000f070602060206020602060206020602060206020602070403fc01f8000000000000000000000 016b:0000000000001f801f800000000079e030c030c030c030c030c030c030c039c01e6000000000000000000000 -016c:0d800d800700f070602060206020602060206020602060206020602070403fc01f8000000000000000000000 -016d:0000000000000d800d800700000079e030c030c030c030c030c030c030c039c01e6000000000000000000000 +016c:0cc00cc00780f070602060206020602060206020602060206020602070403fc01f8000000000000000000000 +016d:0000000000000cc00cc00780000079e030c030c030c030c030c030c030c039c01e6000000000000000000000 016e:07000d800d80f770602060206020602060206020602060206020602070403fc01f8000000000000000000000 016f:0000000007000d800d800700000079e030c030c030c030c030c030c030c039c01e6000000000000000000000 0170:06c00d801b00f070602060206020602060206020602060206020602070403fc01f8000000000000000000000 @@ -351,18 +351,1399 @@ 017d:18c00d8007003fe020c000c00180018003000300060006000c000c00180018203fe000000000000000000000 017e:0000000018c00d800700020000007fe060e041c0038007000e001c00382070607fe000000000000000000000 017f:00000000038004c004c00c000c000c000c003c000c000c000c000c000c000c001e0000000000000000000000 +0180:0000000020006000fe006000600067806fc070e06060606060606060706078c04f8000000000000000000000 +0181:0000000000007f80d840d8601860186018c01fc01860183018301830183018603fc000000000000000000000 +0182:000000000000ffc0604060406000600060007f8060c0606060606060606060c0ff8000000000000000000000 +0183:000000007fc0600060006000600067806fc070e06060606060606060706078c04f8000000000000000000000 +0184:00000000100030007000f000b000338037c038e03060306030603060306030c03f8000000000000000000000 +0185:0000000000000000100030007000f000b000338037c038e030603060306030c03f8000000000000000000000 +0186:0000000000000f0011c020c000600060006000600060006000600040304018800f0000000000000000000000 +0187:0000003000600f4011c020c020006000600060006000600060006000304038800f0000000000000000000000 +0188:00000000000000000030006000401fc031c020c06000600060006000704030c01f8000000000000000000000 +0189:000000000000ff0061c060c0606060606060fc60606060606060606060406180fe0000000000000000000000 +018a:0000000000007f80d8e0d86018301830183018301830183018301830182018c03f0000000000000000000000 +018b:0000000000007fe040c040c000c000c000c03fc060c0c0c0c0c0c0c0c0c060c03fe000000000000000000000 +018c:000000003fe000600060006000601e603f6070e0606060606060606060e031e01f2000000000000000000000 +018d:0000000000000f8011c020e0606060606060704038801f000e000700038000c01f8000000000000000000000 +018e:0000000000003fe020c020c000c000c010c01fc010c000c000c000c040c040c07fe000000000000000000000 +018f:0000000000000f0011c020c0206000600060006000607fe060602040304018800f0000000000000000000000 +0190:000000001f803fc070206060600030001c001f80300060006000602020601fc00f8000000000000000000000 +0191:0000000000003fe0182018201800180018401fc0184018001800180018001800d800d0006000000000000000 +0192:00000000038004c004c00c000c000c000c001f800c000c000c000c000c000c006c0068001000000000000000 +0193:0000006000b01fb0218040804000c000c000c000c000c3e0c0c040c060c030c01f0000000000000000000000 +0194:000000000000f07060206020604030403080188019000d000e0006000e0013001300218021801f0000000000 +0195:0000000020006000e000600060006e3073306330633063306330633063306330f1e000000000000000000000 +0196:0000000000001e000600060006000600060006000600060006000600060006001f8000000000000000000000 +0197:0000000000001f80060006000600060006003fc00600060006000600060006001f8000000000000000000000 +0198:000000000000f0606190633066006c00780078007c006e006700638061c060e0f07000000000000000000000 +0199:180024006c00600060006000600061c0630066007c0078007c006e0067006380f1e000000000000000000000 +019a:000000001e00060006000600060006003fc006000600060006000600060006001f8000000000000000000000 +019b:0000000000001c001c000e3006c007000e003b00cb0011801180118020c020c071e000000000000000000000 +019c:00000000ef7066606660666066606660666066606660666066606660666077603bb000000000000000000000 +019d:0000000000006070302038203c202c20262022202320232021a020e020e020602030e000c000000000000000 +019e:0000000000000000000000000000278079c030c030c030c030c030c030c030c078c000c000c000c000c001e0 +019f:0000000000000f0011c020c02060606061606d606b60686060602040304018800f0000000000000000000000 +01a0:0000000000001e3023b041a040c0c0c0c0c0c0c0c0c0c0c0c0c04080608031001e0000000000000000000000 +01a1:00000000000000000000000000001f3023b041e0c0c0c0c0c0c0c0c0e08071003e0000000000000000000000 +01a2:0000000000001c102730437043b0c1b0c1b0c1b0c1b0c1b0c1b041b0633032301c3000300030003000300070 +01a3:000000000000000000000000000000001c102730437041b0c1b0c1b041b063303c3000300030003000300070 +01a4:0000000000007fc09860d830d830183018601bc01800180018001800180018003c0000000000000000000000 +01a5:000000000000000018002c0060006f8071c060e06060606060606060604070807f006000600060006000f000 +01a6:00000000f80060007f00618060c060c060807f00700078006c00660063006180e0c000600030000000000000 +01a7:0000000000007f8060c04060406000e003c007801e00380070006020602030601fe000000000000000000000 +01a8:00000000000000000000000000003f8030c020c001c007801e003800304030c01fc000000000000000000000 +01a9:0000000000007fe060203020180018000c0007000700040008001000202040207fe000000000000000000000 +01aa:000000003800640064003e00060006000600060006000600060006000600060006000660026001c000000000 +01ab:0000000000000000040004000c007fc00c000c000c000c000c000c000c200e6007a0002000c0038000000000 +01ac:0000000000003fe04620660066000600060006000600060006000600060006001f8000000000000000000000 +01ad:0000000001c002c004c004000c007fc00c000c000c000c000c000c000c200e60078000000000000000000000 +01ae:0000000000007fe046200600060006000600060006000600060006000600060006c002c001c0000000000000 +01af:006000d00010f070602060206020602060206020602060206020602070403fc01f8000000000000000000000 +01b0:0000000000000000006000d0001079e030c030c030c030c030c030c030c039c01e6000000000000000000000 +01b1:00000000000079e049200900118020c0204060606060606060606040304038800f0000000000000000000000 +01b2:000000000000f06060d060d06010601060106020602060206040604070803f001e0000000000000000000000 +01b3:000000000000f1e06090313031301a001a001a000c000c000c000c000c000c001e0000000000000000000000 +01b4:0000000000000000000000000000e1e0c05060b060b0310031001a001a000c000c00080018001000f000e000 +01b5:0000000000003fe020c000c00180018003001fe0060006000c000c00180018203fe000000000000000000000 +01b6:00000000000000000000000000007fe060e041c003803fe00e001c00382070607fe000000000000000000000 +01b7:0000000000003fe020c000c0018001800300030007c00fc000e000600060406060403f801f00000000000000 +01b8:0000000000007fc030403000180018000c000c003e003f00700060006000602020601fc00f80000000000000 +01b9:000000000000000000000000000000007fc0304018000c0006003f0070006000604020c01f800f0000000000 +01ba:00000000000000000000000000007fc04180030006000c0018003f8001c000c007803c007000604038c00f80 +01bb:000000001f003f8061c040c000c000c000c001801fe006000c00180030207fe07fe000000000000000000000 +01bc:000000007fc07fc02000200020003f8031c000e00060006000604060606030c01f8000000000000000000000 +01bd:000000000000000000007f807f80200020003f8031c000e000602060306018c00f8000000000000000000000 +01be:00000000000000000000080008001800ff8018001c000f0003c000e0106018601fc000000000000000000000 +01bf:0000000000000000000000000000ef8071c060e060606060606060606040608061006600780060006000f000 +01c0:0000000006000600060006000600060006000600060006000600060006000600060000000000000000000000 +01c1:0000000019801980198019801980198019801980198019801980198019801980198000000000000000000000 +01c2:00000000060006000600060006003fc0060006003fc006000600060006000600060000000000000000000000 +01c3:0000000006000600060006000600060006000600060006000600000000000600060000000000000000000000 +01c4:0c3006600180f3f0da10cc10c620c620c620c640c640c640c680c680c480d910e1f000000000000000000000 +01c5:000000000630f360d9c0cc00c400c5f0c510c420c420c440c440c480c480d910e1f000000000000000000000 +01c6:0c30066001800c001c000c000c006df0dd108c208c208c408c408c808c80dd107bf000000000000000000000 +01c7:000000000000f1f0606060606060606060606060606060606060606061606160ff6000600060004003800300 +01c8:000000000000f03060306000600060f060306030603060306030603060b060b0ffb008300c300e2007c00380 +01c9:000000000000786018601800180019e0186018601860186018601860186018607e60106018601c400f800700 +01ca:000000000000e3f0c130e130e130b130b130993099308d308d30873087308330c7b000300030002001c00180 +01cb:000000000000e330c130e100e100b170b130993099308d308d30873087308330c7b008300c300e2007c00380 +01cc:00000000000000300030000000004f70f3b061b061b061b061b061b061b061b0f3f008300c300e2007c00380 +01cd:18c00d800700060006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +01ce:0000000018c00d800700000000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +01cf:18c00d8007001f800600060006000600060006000600060006000600060006001f8000000000000000000000 +01d0:0000000031801b000e00000000001e00060006000600060006000600060006001f8000000000000000000000 +01d1:31801b000e000f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 +01d2:0000000031801b000e00000000000f8011c020e06060606060606060704038801f0000000000000000000000 +01d3:18c00d800700f070602060206020602060206020602060206020602070403fc01f8000000000000000000000 +01d4:0000000018c00d8007000000000079e030c030c030c030c030c030c030c039c01e6000000000000000000000 +01d5:7fe030c030c00000f07060206020602060206020602060206020602070403fc01f8000000000000000000000 +01d6:00007fe0000030c030c00000000079e030c030c030c030c030c030c030c039c01e6000000000000000000000 +01d7:030066606c600000f07060206020602060206020602060206020602070403fc01f8000000000000000000000 +01d8:00000180030036c030c00000000079e030c030c030c030c030c030c030c039c01e6000000000000000000000 +01d9:18c00d80676060600000f0706020602060206020602060206020602070403fc01f8000000000000000000000 +01da:000018c00d80070060606060000079e030c030c030c030c030c030c030c039c01e6000000000000000000000 +01db:0c000600636060600000f0706020602060206020602060206020602070403fc01f8000000000000000000000 +01dc:00000c000600030060606060000079e030c030c030c030c030c030c030c039c01e6000000000000000000000 +01dd:00000000000000000000000000001f00618000c0006000607fe06060606030c00f0000000000000000000000 +01de:7fe000006060666006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +01df:00007fe0000019801980000000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +01e0:7fe000000f000f0006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +01e1:7fe0000006000f000f00060000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +01e2:7fe0000000000fe00e20162016001600164027c026403e002600460046104610e7f000000000000000000000 +01e3:00000000000000007fe0000000001f80364026600e603fe066006600660067603fc000000000000000000000 +01e4:0000000000000fc010602020200060006000600061f06060606027f0306018600f8000000000000000000000 +01e5:00000000000000000000000000001f2031e060c060c060c031803f0060007fc03fe02060fff040207fc03f80 +01e6:18c00d8007000fc0106020202000600060006000600061f060602060306018600f8000000000000000000000 +01e7:0000000018c00d800700000000001f2031e060c060c060c031803f0060007fc03fe02060402040207fc03f80 +01e8:18c00d800700f0e06180630066006c00780078007c006e006700638061c060e0f07000000000000000000000 +01e9:18c00d806700e00060006000600061c0630066007c0078007c006e0067006380f1e000000000000000000000 +01ea:0000000000000f0011c020c020606060606060606060606060602040304018800f0006000c0018000f000000 +01eb:00000000000000000000000000000f8011c020e06060606060606060704038801f0006000c0018000f000000 +01ec:7fe0000000000f0011c020c020606060606060606060606060602040304018800f0006000c0018000f000000 +01ed:00000000000000007fe0000000000f8011c020e06060606060606060704038801f0006000c0018000f000000 +01ee:18c00d8007003fe020c000c0018001800300030007c00fc000e000600060406060403f801f00000000000000 +01ef:00000000000031801b000e00000000007fc04180030006000c001f8001c000c040c060803f001e0000000000 +01f0:000000000c6006c003800000000007800180018001800180018001800180018001804180618071003e001c00 +01f1:000000000000f3f0da10cc10c620c620c620c640c640c640c680c680c480d910e1f000000000000000000000 +01f2:000000000000f000d800cc00c400c5f0c510c420c420c440c440c480c480d910e1f000000000000000000000 +01f3:0000000000000c001c000c000c006df0dd108c208c208c408c408c808c80dd107bf000000000000000000000 +01f4:03800f001c000fc0106020202000600060006000600061f060602060306018600f8000000000000000000000 +01f5:0000000003800f001c00000000001f2031e060c060c060c031803f0060007fc03fe02060402040207fc03f80 +01f6:000000000000ef00c600c600c600c600c670fe30c630c630c630c630c630c630efe000000000000000000000 +01f7:000000000000ef8071c060e06060606060606060606060c060c061006100660078006000600060006000f000 +01f8:38001e000700c07060207020782058204c2046204720432041a040e040e04060e03000000000000000000000 +01f9:0000000038001e00070000000000278079c030c030c030c030c030c030c030c079e000000000000000000000 +01fa:06001800660009000900060006000b000900118011803fc020c0204040604060e0f000000000000000000000 +01fb:03800f001c0009000900060000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +01fc:03800f001c000fe00e20162016001600164027c026403e002600460046104610e7f000000000000000000000 +01fd:0000000003800f001c00000000001f80364026600e603fe066006600660067603fc000000000000000000000 +01fe:03800f001c600fc011c021c021e06360636066606c606c6078603840304038806f0000000000000000000000 +01ff:0000000003800f001c00000000000fe011c021e06360666066606c60784038807f0000000000000000000000 +0200:e38079e01c70060006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +0201:00000000e38079e01c70000000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +0202:0f0019801980060006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +0203:000000000f0019801980000000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +0204:e38079e01c707fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +0205:00000000e38079e01c70000000000f0030c0606060607fe060006000300018600f8000000000000000000000 +0206:0f001980198000007fc0304030403000300030803f80308030003000302030207fe000000000000000000000 +0207:000000000f0019801980000000000f0030c0606060607fe060006000300018600f8000000000000000000000 +0208:e38079e01c7000001f80060006000600060006000600060006000600060006001f8000000000000000000000 +0209:00000000e38079e01c70000000001e00060006000600060006000600060006001f8000000000000000000000 +020a:0f001980198000001f80060006000600060006000600060006000600060006001f8000000000000000000000 +020b:000000000f0019801980000000001e00060006000600060006000600060006001f8000000000000000000000 +020c:e38079e01c700f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 +020d:00000000e38079e01c70000000000f8011c020e06060606060606060704038801f0000000000000000000000 +020e:0f001980198000000f0011c020c02060606060606060606060602040304018800f0000000000000000000000 +020f:000000000f0019801980000000000f8011c020e06060606060606060704038801f0000000000000000000000 +0210:e38079e01c70ff00618060c060c060c060807f007c006e006700638061c060e0f07000000000000000000000 +0211:00000000e38079e01c7000000000738034c038c0300030003000300030003000780000000000000000000000 +0212:0f00198019800000ff00618060c060c060807f007c006e006700638061c060e0f07000000000000000000000 +0213:000000000f001980198000000000738034c038c0300030003000300030003000780000000000000000000000 +0214:e38079e01c700000f07060206020602060206020602060206020602070403fc01f8000000000000000000000 +0215:00000000e38079e01c700000000079e030c030c030c030c030c030c030c039c01e6000000000000000000000 +0216:0f00198019800000f07060206020602060206020602060206020602070403fc01f8000000000000000000000 +0217:000000000f00198019800000000079e030c030c030c030c030c030c030c039c01e6000000000000000000000 +0218:0000000000001fe030606020602070003c001e00078001c000e04060406060c07f8000000f000f0003001e00 +0219:00000000000000000000000000001fc030c0304038001e00078001c020c030c03f8000000f000f0003001e00 +021a:0000000000007fe04620060006000600060006000600060006000600060006001f8000000f000f0003001e00 +021b:0000000000000000040004000c007fc00c000c000c000c000c000c000c200e40078000000f000f0003001e00 +021c:0000000020003f8020c000600060006001c007003e00018000600060006000e001c007003c00000000000000 +021d:000000000000000020003f8020c00060006001c007003e0001800060006000e001c007003c00000000000000 +021e:31801b000e00f0f0606060606060606060607fe0606060606060606060606060f0f000000000000000000000 +021f:18c00d8017003000700030003000378039c030c030c030c030c030c030c030c079e000000000000000000000 +0220:000000000000278079c030c030c030c030c030c030c030c030c030c030c030c078c000c000c000c000c001e0 +0221:00000000018003800180018001801d8067804380c180c180c180c1e0e390759039e002000400000000000000 +0222:000000000900118030c030c030c018800d0006000b00118030c030c030c018800f0000000000000000000000 +0223:00000000000000000900118030c030c018800d0006000b00118030c030c018800f0000000000000000000000 +0224:0000000000003fe020c000c00180018003000300060006000c000c00180018003fc00060006001c000000000 +0225:00000000000000000000000000007fe060e041c0038007000e001c00380070007fc00060006001c000000000 +0226:06000f0006000000060006000b000b000900118010803fc020c0204040604060e0f000000000000000000000 +0227:0000000006000f000f00060000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +0228:0000000000007fc0304030403000300030803f803080300030003000302030207fe002000300018009800700 +0229:00000000000000000000000000000f0030c0606060607fe060006000300018600f8002000300018009800700 +022a:7fe00000606060600f0011c020c02060606060606060606060602040304018800f0000000000000000000000 +022b:000000003fc0000030c030c000000f8011c020e06060606060606060704038801f0000000000000000000000 +022c:7fe000003c6063c00f0011c020c02060606060606060606060602040304018800f0000000000000000000000 +022d:00003fc000000cc01f80330000000f8011c020e06060606060606060704038801f0000000000000000000000 +022e:06000f00060000000f0011c020c02060606060606060606060602040304018800f0000000000000000000000 +022f:0000000006000f000600000000000f8011c020e06060606060606060704038801f0000000000000000000000 +0230:3fc000000f000f0000000f0011c020c0206060606060606060602040304018800f0000000000000000000000 +0231:3fc0000006000f000600000000000f8011c020e06060606060606060704038801f0000000000000000000000 +0232:3fc000000000f07060203040188018800d0006000600060006000600060006000f0000000000000000000000 +0233:00000000000000003fc000000000f0f0602030403040188018800d000d000600060004000c00080078007000 +0234:000000001e00060006000600060006000600060006000600060006c0076006401f8004000800000000000000 +0235:0000000000000000000000000000278079c030c030c030c030c030e030d030d079e001000200000000000000 +0236:0000000000000000040004000c007fc00c000c000c000c000c000cc00d600e40078008001000000000000000 +0237:000000000000000000000000000003c000c000c000c000c000c000c000c000c000c020c030c038801f000e00 +0238:0000000006000e0006000600060036c07fe04f20c630c630c630c630ef7079e030c000000000000000000000 +0239:000000000000000000000000000030c079e0ef70c630c630c630c6304f207fe036c006000600060006000f00 +023a:0000000000100620064006800f000b001580198010803fc060c0a04040604060e0f000000000000000000000 +023b:0000004000400fc010e020a02080610061006100620062006200240034201c400f8008000800000000000000 +023c:00000000000000000000004000801f8031c021c06200620064006400784038c01f8010002000000000000000 +023d:0000000000003c0018001800180018001800ff001800180018001800181018103ff000000000000000000000 +023e:0000002000207fe046400680068007000700060006000e000e001600160026003f8040004000000000000000 +023f:00000000000000000000000000001fc030c0304038001e00078001c020c030c03f8018000c00066003c00000 +0240:00000000000000000000000000007fe060e041c0038007000e001c0038007000700018000c00066003c00000 +0241:000000001e007180604060600060006000c001800f000c000c000c000c000c001e0000000000000000000000 +0242:0000000000000000000000001e00718060c000c000c001800e00080008001c00000000000000000000000000 +0243:000000000000ff00608060c060c060c061807f8060c06060fc606060606060c0ff8000000000000000000000 +0244:000000000000f0706020602060206020fff06020602060206020602070403fc01f8000000000000000000000 +0245:00000000000002000200020007000700070009800980098010c010c010c02060707000000000000000000000 +0246:0000008000807fc0314031403100320032803f803480340034003800382038207fe010001000000000000000 +0247:00000000000000000080008001000f0032c0626064607fe068006800300018602f8020000000000000000000 +0248:0000000000001f8006000600060006000600060006003fc00600060006000600060006000600040038003000 +0249:000000000000018001800000000007800180018001800ff0018001800180018001804180618071003e001c00 +024a:000000001cc0278043804180c180c180c180c180c180c180c180e18073803f8001800180018001b000b00060 +024b:00000000000000000000000000001cc027804380c180c180c180c180e18073803f800180018001b000b00060 +024c:000000000000ff00618060c060c060c06080ff007c006e006700638061c060e0f07000000000000000000000 +024d:000000000000000000000000000039c01a601c601800ff0018001800180018003c0000000000000000000000 +024e:000000000000f07060203040fff018800d0006000600060006000600060006000f0000000000000000000000 +024f:0000000000000000000000000000f0f0602030403040fff018800d000d000600060004000c00080078007000 +0250:0000000000000000000000000000778039c030c030c030c033803c00308031801f0000000000000000000000 +0251:00000000000000000000000000003f2063a0c1c0c1c0c180c180c180c3c0e4c0786000000000000000000000 +0252:0000000000000000000000000000c3c064e0786030603060306070607060b8c09f8000000000000000000000 +0253:000000001e00230063006000600067806fc070e06060606060606060706078c04f8000000000000000000000 +0254:00000000000000000000000000003f00618041c000c000c000c000c0608071803f0000000000000000000000 +0255:00000000000000000000000000001f8031c020c06000600060006380744038c05f8000000000000000000000 +0256:0000000000c001c000c000c000c01ec063c041c0c0c0c0c0c0c0c0c0e1c072c03cc000d00050007000000000 +0257:00000000007000d000d000d000c01ec063c041c0c0c0c0c0c0c0c0c0e1c072c03ce000000000000000000000 +0258:00000000000000000000000000000f0030c0606060607fe00060006000c061801f0000000000000000000000 +0259:00000000000000000000000000001f00618000c0006000607fe06060606030c00f0000000000000000000000 +025a:00000000000000000000000000003c00c690035003200d803180c180c18063001c0000000000000000000000 +025b:00000000000000000000000000000f801fc0206060003f003f00600060203fc01f0000000000000000000000 +025c:00000000000000000000000000001f003f80604000600fc00fc0006040603fc00f8000000000000000000000 +025d:00000000000000000000000000003e107f50c0b000d01f801f8000c080c07f801f0000000000000000000000 +025e:00000000000000000000000000001f003f806040c060cfc0cfc0c06040603fc00f8000000000000000000000 +025f:0000000007800300030003000300030003001f800300030003000300320032001c0000000000000000000000 +0260:000000000000000000e0013001301f8031c060c060c060c060c060c061c033c01ec00040204030c01f800f00 +0261:00000000000000000000000000001f8031c060c060c060c060c060c061c033c01ec00040204030c01f800f00 +0262:00000000000000000000000000000fc0106020206000600061f06060306018600f8000000000000000000000 +0263:000000000000000000000000000070e0304030401880188019000d000e0006000e0013001300218021801f00 +0264:0000000000000000000000000000000000007060d8b0989099100d000e0006000e0013001300218021801f00 +0265:0000000079e030c030c030c030c030c030c030c039c01ec000c000c000e000c0008000000000000000000000 +0266:000000001e003300330030003000378039c030c030c030c030c030c030c030c079e000000000000000000000 +0267:0000000010003000700030003000378039c030c030c030c030c030c030c030c078c000c00380070000000000 +0268:00000000000006000600000000001e000600060006003fc006000600060006001f8000000000000000000000 +0269:00000000000000000000000000001e00060006000600060006000600060006001f8000000000000000000000 +026a:00000000000000000000000000001f80060006000600060006000600060006001f8000000000000000000000 +026b:000000001e00060006000600060006001e6067800600060006000600060006001f8000000000000000000000 +026c:000000001e00060006000600060006003e0066003fc0060006000600060006001f8000000000000000000000 +026d:000000001e0006000600060006000600060006000600060006000600060006000660066003c0018000000000 +026e:00000000f00030003000300030003ff0306030c0318033003600338030e03070fc700070186019c00f800000 +026f:0000000000000000000000000000ef70666066606660666066606660666077603bb000000000000000000000 +0270:0000000000000000000000000000ef70666066606660666066606660666076e03b6000600060006000300000 +0271:0000000000000000000000000000ddc06ee06660666066606660666066606660ef6000600660066003c00000 +0272:000000000000000000000000000013c03ce0186018601860186018601860186018f0d800d800700000000000 +0273:00000000000000000000000000004f00f3806180618061806180618061806180f18001b001b000e000000000 +0274:0000000000000000000000000000c0e06040704058404c404640434041c040c0e06000000000000000000000 +0275:00000000000000000000000000000f8011c020e060607fe07fe06060704038801f0000000000000000000000 +0276:00000000000000000000000000001de023304200c210c3f0c210c200e20073303de000000000000000000000 +0277:000000000000000000000f003fc06060c030c630c630c630c630c63066207fc0198000000000000000000000 +0278:0000000000000000060006000f8017c026e0666066606660666076403e801f00060006000000000000000000 +0279:000000000000000000000000000003c00180018001800180018001806380658039c000000000000000000000 +027a:000000000000000003c00180018001800180018001800180018001806380658039c000000000000000000000 +027b:00000000000000000000000000000780030003000300030003000300c700cb0073000330033001e000000000 +027c:0000000000000000000000000000738034c038c0300030003000300030003000300030003000780000000000 +027d:0000000000000000000000000000738034c038c0300030003000300030003000300031801b800e0000000000 +027e:000000000000000000000000038004c004c00c000c000c000c000c000c000c001e0000000000000000000000 +027f:0000000000000000000000001c00320032000300030003000300030003000300030003000300078000000000 +0280:00000000000000000000000000007f8030c0306030403f803e003700338031c078e000000000000000000000 +0281:000000000000000000000000000078e031c0338037003e003f803040306030c07f8000000000000000000000 +0282:00000000000000000000000000001fc030c0304038001e00078001c020c030c03f801000100013000e000000 +0283:0000000001c00260066006000600060006000600060006000600060006000600060006000600640064003800 +0284:0000000001c00260066006000600060006000600060006000600060006003fc0060006000600640064003800 +0285:00000000380064006400060006000600060006000600060006000600060006000600060006000660026001c0 +0286:0000000001c0026006600600060006000600060006000600060006000600060006003fc06660646064003800 +0287:00000000000000001e00270043000300030003000300030003003fe003000200020000000000000000000000 +0288:0000000000000000040004000c007fc00c000c000c000c000c000c000c000c000cc004c00380000000000000 +0289:000000000000000000000000000079e030c030c030c0fff030c030c030c039c01e6000000000000000000000 +028a:000000000000000000000000000079e009001880304060606060206020c011c00f0000000000000000000000 +028b:000000000000000000000000000078c031c03060306030603060306030e039c01f0000000000000000000000 +028c:0000000000000000000000000000060006000b000b001180118020c020c04060e0f000000000000000000000 +028d:00000000000000000000000000001980198019802dc02dc02ec0466046604660eff000000000000000000000 +028e:0000000000e001e0010003000200060006000b000b001180118020c020c04060f0f000000000000000000000 +028f:0000000000000000000000000000f0706020304018800d0006000600060006000f0000000000000000000000 +0290:00000000000000000000000000007fe060e041c0038007000e001c00380070407f80019000f0006000000000 +0291:00000000000000000000000000007fe060e041c0038007000e001c00386070907fe002000400000000000000 +0292:000000000000000000000000000000007fc04180030006000c001f8001c000c040c060803f001e0000000000 +0293:000000000000000000000000000000007fc04180030006000c001f8001c038c044c062803f001e8000400000 +0294:000000001e007180604060600060006000c001800f000c000c000c000c000c001e0000000000000000000000 +0295:00000000078018e02060606060006000300018000f0003000300030003000300078000000000000000000000 +0296:000000001e000c000c000c000c000c000f00018000c0006000606060604071801e0000000000000000000000 +0297:0000000000000000000000000fc0106020202000600060006000600060006000600060002000302018400f80 +0298:0000000000000f0011c020c020606060666066606060606060602040304018800f0000000000000000000000 +0299:0000000000000000000000000000ff00608060c061807f8060c06060606060c0ff8000000000000000000000 +029a:00000000000000000000000000001f003f8040c0c0607e607e60c060c0407f803e0000000000000000000000 +029b:00000000000000000000007000900fc0106020206000600061f06060306018600f8000000000000000000000 +029c:0000000000000000000000000000f1e060c060c060c07fc060c060c060c060c0f1e000000000000000000000 +029d:00000000000003000300000000000f000300030003000300030003000300030007c01b00230022001c000000 +029e:00000000f1e038c01cc00ec007c003c007c00cc018c070c000c000c000c000e000c000000000000000000000 +029f:00000000000000000000000000007800300030003000300030003000300030407fc000000000000000000000 +02a0:00000000000000000030005000501e4023c041c0c0c0c0c0c0c0c0c0e0c071c03fc000c000c000c000c001e0 +02a1:000000001e007180604060600060006000c001800f000c007f800c000c000c001e0000000000000000000000 +02a2:00000000078018e02060606060006000300018000f0003001fe0030003000300078000000000000000000000 +02a3:0000000000000c001c000c000c006df0dd108c208c208c408c408c808c80dd107bf000000000000000000000 +02a4:0000000000000c001c000c000c006df0dd108c208c208c408c408cc08c60dc307a1000100c20064001800000 +02a5:0000000000000c001c000c000c006df0dd108c208c208c408c408c808ce0dd907bf001000200000000000000 +02a6:0000000000000000200020006000fff0663066106700638060e06070623066303fe000000000000000000000 +02a7:0000000000e00130233023006300ff00630063006300630063006300630073003f0003000300320032001c00 +02a8:0000000000000000200020006000f9e0633062106600660066006660629063b03de001000200000000000000 +02a9:000000001800260026006000600060006000fbc0666066606660666066606660f760006000600c600cc00780 +02aa:0000000000000000e0006000600063f0663066106700638060e06070643066303fe000000000000000000000 +02ab:0000000000000000e0006000600067f066306430607060e061c06380671066303ff000000000000000000000 +02ac:00000000ff706620662037403b40198019800000ff706620662037403b401980198000000000000000000000 +02ad:0000000000000000000000007fe07fe060606060000000007fe07fe060606060000000000000000000000000 +02ae:00006000a1e0b0c0b0c030c030c030c030c030c039c01ec000c000c000e000c0008000000000000000000000 +02af:00006000a1e0b0c0b0c030c030c030c030c030c039c01ec000c000c000d00050005000600000000000000000 +02b0:000000001000300070003000378039c030c030c030c030c079e0000000000000000000000000000000000000 +02b1:00000f001380300030003000378039c030c030c030c030c079e0000000000000000000000000000000000000 +02b2:000000c000c0000003c000c000c000c000c000c000c010c018800f0000000000000000000000000000000000 +02b3:0000000033801cc0180018001800180018003c00000000000000000000000000000000000000000000000000 +02b4:0000000003c00180018001800180018033801cc0000000000000000000000000000000000000000000000000 +02b5:0000000007800300030003000300030067003b00030001600080000000000000000000000000000000000000 +02b6:0000000078e031c0338037003e003f803040306030c07f800000000000000000000000000000000000000000 +02b7:00000000eff0466046602ec02dc02dc019801980198000000000000000000000000000000000000000000000 +02b8:0000000078f0302018400c800d000500060006000c0038003000000000000000000000000000000000000000 +02b9:0000000003000300060006000c000c0000000000000000000000000000000000000000000000000000000000 +02ba:000000000c600c6018c018c03180318000000000000000000000000000000000000000000000000000000000 +02bb:000000000100030006000c000c000f000f000600000000000000000000000000000000000000000000000000 +02bc:0000000006000f000f000300030006000c000800000000000000000000000000000000000000000000000000 +02bd:0000000006000f000f000c000c00060003000100000000000000000000000000000000000000000000000000 +02be:000000000e0003800180018003800e0000000000000000000000000000000000000000000000000000000000 +02bf:0000000007001c00180018001c00070000000000000000000000000000000000000000000000000000000000 +02c0:000000001e00718060c000c001800e0008000800080000000000000000000000000000000000000000000000 +02c1:00000000078018e0306030001800070001000100010000000000000000000000000000000000000000000000 +02c2:0000000000e003800e0038000e00038000e00000000000000000000000000000000000000000000000000000 +02c3:0000000070001c00070001c007001c0070000000000000000000000000000000000000000000000000000000 +02c4:0000000006000f00198030c06060000000000000000000000000000000000000000000000000000000000000 +02c5:00000000606030c019800f000600000000000000000000000000000000000000000000000000000000000000 +02c6:0000000006001f8030c000000000000000000000000000000000000000000000000000000000000000000000 +02c7:0000000030c01980060000000000000000000000000000000000000000000000000000000000000000000000 +02c8:0000000006000600060006000600060000000000000000000000000000000000000000000000000000000000 +02c9:000000003fc03fc0000000000000000000000000000000000000000000000000000000000000000000000000 +02ca:03800f001c000000000000000000000000000000000000000000000000000000000000000000000000000000 +02cb:1c000f0003800000000000000000000000000000000000000000000000000000000000000000000000000000 +02cc:0000000000000000000000000000000000000000000000000000000000000000000006000600060006000600 +02cd:00000000000000000000000000000000000000000000000000000000000000000000000000003fc03fc00000 +02ce:1c000f0003800000000000000000000000000000000000000000000000000000000000000000000000000000 +02cf:03800f001c000000000000000000000000000000000000000000000000000000000000000000000000000000 +02d0:00000000000000000000000000001f800f000600000000000000000006000f001f8000000000000000000000 +02d1:00000000000000000000000000001f800f000600000000000000000000000000000000000000000000000000 +02d2:000000000000000000000000000000000e0003800180018003800e0000000000000000000000000000000000 +02d3:0000000000000000000000000000000007001c00180018001c00070000000000000000000000000000000000 +02d4:0000000000000000000000000000000006000600060006001f801f8000000000000000000000000000000000 +02d5:000000000000000000000000000000001f801f80060006000600060000000000000000000000000000000000 +02d6:00000000000000000000000000000000060006001f801f800600060000000000000000000000000000000000 +02d7:00000000000000000000000000000000000000001f801f800000000000000000000000000000000000000000 +02d8:198019800f000000000000000000000000000000000000000000000000000000000000000000000000000000 +02d9:06000f0006000000000000000000000000000000000000000000000000000000000000000000000000000000 +02da:0f00198019800f00000000000000000000000000000000000000000000000000000000000000000000000000 +02db:000000000000000000000000000000000000000000000000000000000000000000000600030001800f000000 +02dc:1c6036c063800000000000000000000000000000000000000000000000000000000000000000000000000000 +02dd:1c7079e0e3800000000000000000000000000000000000000000000000000000000000000000000000000000 +02de:0000000000000000000000000000000000001c0036c003800100000000000000000000000000000000000000 +02df:30c019800f0006000f00198030c0000000000000000000000000000000000000000000000000000000000000 +02e0:0000000070e03040188019000d000e0006000e00130021801f00000000000000000000000000000000000000 +02e1:00001e000600060006000600060006000600060006001f800000000000000000000000000000000000000000 +02e2:000000001fc030c038001e00078001c030c03f80000000000000000000000000000000000000000000000000 +02e3:0000000079c0308019000e000700098010c039e0000000000000000000000000000000000000000000000000 +02e4:00000000070018c018c018000e00020002000000000000000000000000000000000000000000000000000000 +02e5:00000000000000003f8001800180018001800180018001800180018001800180018000000000000000000000 +02e6:00000000000000000180018001803f8001800180018001800180018001800180018000000000000000000000 +02e7:00000000000000000180018001800180018001803f8001800180018001800180018000000000000000000000 +02e8:00000000000000000180018001800180018001800180018001803f8001800180018000000000000000000000 +02e9:00000000000000000180018001800180018001800180018001800180018001803f8000000000000000000000 +02ea:00000000000000000000000000000000000000003000300030003000300030003f8000000000000000000000 +02eb:00000000000000000000000000000000000000003000300030003f8030003000300000000000000000000000 +02ec:0000000000000000000000000000000000000000000000000000000000000000000060c031801b000e000400 +02ed:00007fe000007fe0000000000000000000000000000000000000000000000000000000000000000000000000 +02ee:0000000030c079e079e01860186030c061804100000000000000000000000000000000000000000000000000 +02ef:00000000000000000000000000000000000000000000000000000000000000000000606030c019800f000600 +02f0:0000000000000000000000000000000000000000000000000000000000000000000006000f00198030c06060 +02f1:00000000000000000000000000000000000000000000000000000000000000e003800e0038000e00038000e0 +02f2:00000000000000000000000000000000000000000000000000000000000070001c00070001c007001c007000 +02f3:0000000000000000000000000000000000000000000000000000000000000000000000000f00198019800f00 +02f4:000000000000000000000000000000001c000f00038000000000000000000000000000000000000000000000 +02f5:00000000000000000000000000000000e38079e01c7000000000000000000000000000000000000000000000 +02f6:000000000000000000000000000000001c7079e0e38000000000000000000000000000000000000000000000 +02f7:00000000000000000000000000000000000000000000000000000000000000000000000000001c6036c06380 +02f8:000000000c001e001e000c00000000000c001e001e000c000000000000000000000000000000000000000000 +02f9:000000003f803f80300030003000300030000000000000000000000000000000000000000000000000000000 +02fa:000000001fc01fc000c000c000c000c000c00000000000000000000000000000000000000000000000000000 +02fb:0000000000000000000000000000000000000000300030003000300030003f803f8000000000000000000000 +02fc:000000000000000000000000000000000000000000c000c000c000c000c01fc01fc000000000000000000000 +02fd:0000000000000000000000000000000000000000606060606060606060607fe07fe000000000000000000000 +02fe:0000000000000000000000000000000000000000600060006000600060007fe07fe000000000000000000000 +02ff:00000000000000000000000000000000000000000000000000000000000000000000100030007fe030001000 0300:0c00060003000000000000000000000000000000000000000000000000000000000000000000000000000000 0301:030006000c000000000000000000000000000000000000000000000000000000000000000000000000000000 0302:04000e001b003180000000000000000000000000000000000000000000000000000000000000000000000000 0303:1c803f8027000000000000000000000000000000000000000000000000000000000000000000000000000000 0304:00001f801f800000000000000000000000000000000000000000000000000000000000000000000000000000 -0306:1b001b000e000000000000000000000000000000000000000000000000000000000000000000000000000000 +0305:00007fe07fe00000000000000000000000000000000000000000000000000000000000000000000000000000 +0306:198019800f000000000000000000000000000000000000000000000000000000000000000000000000000000 +0307:0600060000000000000000000000000000000000000000000000000000000000000000000000000000000000 0308:1980198000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0309:0e00130003000600000000000000000000000000000000000000000000000000000000000000000000000000 030a:0e001b001b000e00000000000000000000000000000000000000000000000000000000000000000000000000 +030b:1c7079e0e3800000000000000000000000000000000000000000000000000000000000000000000000000000 030c:31801b000e000400000000000000000000000000000000000000000000000000000000000000000000000000 +030d:0600060006000600000000000000000000000000000000000000000000000000000000000000000000000000 +030e:1980198019801980000000000000000000000000000000000000000000000000000000000000000000000000 +030f:e38079e01c700000000000000000000000000000000000000000000000000000000000000000000000000000 +0310:666030c01f800000000000000000000000000000000000000000000000000000000000000000000000000000 +0311:0f00198019800000000000000000000000000000000000000000000000000000000000000000000000000000 +0312:07000c000f000f00000000000000000000000000000000000000000000000000000000000000000000000000 +0313:0f000f0003000e00000000000000000000000000000000000000000000000000000000000000000000000000 +0314:0f000f000c000700000000000000000000000000000000000000000000000000000000000000000000000000 +0315:01e001e0006001c0000000000000000000000000000000000000000000000000000000000000000000000000 +0316:00000000000000000000000000000000000000000000000000000000000000000000000000001c000f000380 +0317:000000000000000000000000000000000000000000000000000000000000000000000000000003800f001c00 +0318:00000000000000000000000000000000000000000000000000000000000000000000008000800f8000800080 +0319:00000000000000000000000000000000000000000000000000000000000000000000100010001f0010001000 +031a:00f0001000100010000000000000000000000000000000000000000000000000000000000000000000000000 +031b:00000000000000f000f0003000e0000000000000000000000000000000000000000000000000000000000000 +031c:0000000000000000000000000000000000000000000000000000000000000000000007001c0018001c000700 +031d:0000000000000000000000000000000000000000000000000000000000000000000004000400040004001f00 +031e:000000000000000000000000000000000000000000000000000000000000000000001f000400040004000400 +031f:00000000000000000000000000000000000000000000000000000000000000000000040004001f0004000400 +0320:00000000000000000000000000000000000000000000000000000000000000000000000000001f0000000000 +0321:0000000000000000000000000000000000000000000000000000000000000000000000800080008001001e00 +0322:00000000000000000000000000000000000000000000000000000000000000000000020002000200010000f0 +0323:0000000000000000000000000000000000000000000000000000000000000000000000000000060006000000 +0324:0000000000000000000000000000000000000000000000000000000000000000000000000000198019800000 +0325:0000000000000000000000000000000000000000000000000000000000000000000000000600090009000600 +0326:0000000000000000000000000000000000000000000000000000000000000000000000000f000f0003000e00 0327:000000000000000000000000000000000000000000000000000000000000000000000600030001800f000000 0328:0000000000000000000000000000000000000000000000000000000000000000000006000c0018000f000000 +0329:0000000000000000000000000000000000000000000000000000000000000000000006000600060006000000 +032a:0000000000000000000000000000000000000000000000000000000000000000000000007fe0402040200000 +032b:000000000000000000000000000000000000000000000000000000000000000000000000462046207fe00000 +032c:00000000000000000000000000000000000000000000000000000000000000000000000018c00d8007000000 +032d:00000000000000000000000000000000000000000000000000000000000000000000000004000e001b003180 +032e:000000000000000000000000000000000000000000000000000000000000000000000000198019800f000000 +032f:0000000000000000000000000000000000000000000000000000000000000000000000000f00198019800000 +0330:0000000000000000000000000000000000000000000000000000000000000000000000000e401fc013800000 +0331:00000000000000000000000000000000000000000000000000000000000000000000000000001f801f800000 0332:00000000000000000000000000000000000000000000000000000000000000000000000000000000fff0fff0 +0333:00000000000000000000000000000000000000000000000000000000000000000000fff0fff00000fff0fff0 +0334:0000000000000000000000000000000000001c203e6036c067c0438000000000000000000000000000000000 +0335:00000000000000000000000000000000000000001f801f800000000000000000000000000000000000000000 +0336:00000000000000000000000000000000000000007fe07fe00000000000000000000000000000000000000000 +0337:0000000000000000000000000000000001800180060006001800180000000000000000000000000000000000 +0338:0000000000000000000000000060006001800180060006001800180060006000000000000000000000000000 +0339:0000000000000000000000000000000000000000000000000000000000000000000000000600010001000600 +033a:000000000000000000000000000000000000000000000000000000000000000000000000000080208020ffe0 +033b:0000000000000000000000000000000000000000000000000000000000000000000000000000ffe08020ffe0 +033c:00000000000000000000000000000000000000000000000000000000000000000000000071c08a2004000400 +033d:19800f0006000f00198000000000000000000000000000000000000000000000000000000000000000000000 +033e:0300060003000600000000000000000000000000000000000000000000000000000000000000000000000000 +033f:fff00000fff00000000000000000000000000000000000000000000000000000000000000000000000000000 +0340:0c00060003000000000000000000000000000000000000000000000000000000000000000000000000000000 +0341:030006000c000000000000000000000000000000000000000000000000000000000000000000000000000000 +0342:1c40238000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0343:0e00010001000600000000000000000000000000000000000000000000000000000000000000000000000000 +0344:03800f00dc60c060000000000000000000000000000000000000000000000000000000000000000000000000 +0345:0000000000000000000000000000000000000000000000000000000000000000000000000600060007000000 +0346:7fe0402040200000000000000000000000000000000000000000000000000000000000000000000000000000 +0347:0000000000000000000000000000000000000000000000000000000000000000000000003fc000003fc00000 +0348:0000000000000000000000000000000000000000000000000000000000000000000000001980198019801980 +0349:0000000000000000000000000000000000000000000000000000000000000000000000000f00010001000100 +034a:1d20366066c04b80000000000000000000000000000000000000000000000000000000000000000000000000 +034b:060000203e606780400006000000000000000000000000000000000000000000000000000000000000000000 +034c:1e60678000001e60678000000000000000000000000000000000000000000000000000000000000000000000 +034d:0000000000000000000000000000000000000000000000000000000000000000000020406060fff060602040 +034e:0000000000000000000000000000000000000000000000000000000000000000000006000f001f8006000600 +034f:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0350:1c00070001c007001c0000000000000000000000000000000000000000000000000000000000000000000000 +0351:0600080008000600000000000000000000000000000000000000000000000000000000000000000000000000 +0352:1f80606046200000000000000000000000000000000000000000000000000000000000000000000000000000 +0353:0000000000000000000000000000000000000000000000000000000000000000000060601980060019806060 +0354:0000000000000000000000000000000000000000000000000000000000000000000003800e0038000e000380 +0355:000000000000000000000000000000000000000000000000000000000000000000001c00070001c007001c00 +0356:00000000000000000000000000000000000000000000000000000000000000000000c0c031e00de03330c330 +0357:0c00020002000c00000000000000000000000000000000000000000000000000000000000000000000000000 +0358:0070007000700000000000000000000000000000000000000000000000000000000000000000000000000000 +0359:00000000000000000000000000000000000000000000000000000000000000000000090006001f8006000900 +035a:0000000000000000000000000000000000000000000000000000000000000000000071c08a2084208a2071c0 +035b:18003fe07fc00180000000000000000000000000000000000000000000000000000000000000000000000000 +035c:0000000000000000000000000000000000000000000000000000000000000000000020102010102008400780 +035d:2010201010200840078000000000000000000000000000000000000000000000000000000000000000000000 +035e:1ff01ff000000000000000000000000000000000000000000000000000000000000000000000000000000000 +035f:000000000000000000000000000000000000000000000000000000000000000000000000000000001ff01ff0 +0360:1e10333021e00000000000000000000000000000000000000000000000000000000000000000000000000000 +0361:0780084010202010201000000000000000000000000000000000000000000000000000000000000000000000 +0362:00000000000000000000000000000000000000000000000000000000000000000000004000603ff000600040 +0363:0f0000800f8010800f8000000000000000000000000000000000000000000000000000000000000000000000 +0364:0f0010801f0010000f0000000000000000000000000000000000000000000000000000000000000000000000 +0365:0200000002000200020000000000000000000000000000000000000000000000000000000000000000000000 +0366:0f001080108010800f0000000000000000000000000000000000000000000000000000000000000000000000 +0367:10801080108010800f0000000000000000000000000000000000000000000000000000000000000000000000 +0368:0f001000100010000f0000000000000000000000000000000000000000000000000000000000000000000000 +0369:0080008007800880078000000000000000000000000000000000000000000000000000000000000000000000 +036a:080008000f000880088000000000000000000000000000000000000000000000000000000000000000000000 +036b:5dc0664044404440444000000000000000000000000000000000000000000000000000000000000000000000 +036c:0b800c0008000800080000000000000000000000000000000000000000000000000000000000000000000000 +036d:04001f0004000400070000000000000000000000000000000000000000000000000000000000000000000000 +036e:1080108009000900060000000000000000000000000000000000000000000000000000000000000000000000 +036f:11000a0004000a00110000000000000000000000000000000000000000000000000000000000000000000000 +0370:0000000000007800300030003000300030003fc0300030003000300030003000780000000000000000000000 +0371:000000000000000000000000000078003000300030003fc03000300030003000780000000000000000000000 +0372:000000000000fff0c630c630c6300600060006000600060006000600060006001f8000000000000000000000 +0373:000000000000000000003fe04620462006000600060006000600060006000600060000000000000000000000 +0374:00000000000007000e000c000800000000000000000000000000000000000000000000000000000000000000 +0375:00000000000000000000000000000000000000000000000000000100030007000e0000000000000000000000 +0376:000000000000f0f0606060e06160616062606260646064606860686070606060f0f000000000000000000000 +0377:0000000000000000000000000000f0f0606060e0616062606460686070606060f0f000000000000000000000 +037a:0000000000000000000000000000000000000000000000000000000000000000000000000600060007000000 +037b:00000000000000000000000000000f8011c020e00060006000600060004038801f0000000000000000000000 +037c:00000000000000000000000000001f00388070406000670067006000200011c00f8000000000000000000000 +037d:00000000000000000000000000000f8011c020e000600e600e600060004038801f0000000000000000000000 +037e:000000000000000000000000000000000c001e001e000c00000000000c001e001e00060006000c0018001000 +037f:0000000000001f80060006000600060006000600060006000600060006000600060006000600040038003000 +0384:03800f001c000000000000000000000000000000000000000000000000000000000000000000000000000000 +0385:03800f00dc60c060000000000000000000000000000000000000000000000000000000000000000000000000 +0386:0000000000004600c600cb008b0009001180118010803fc020c0204040604060e0f000000000000000000000 +0387:0000000000000000000000000000000006000f000f0006000000000000000000000000000000000000000000 +0388:0000000000005fe0d820d8209800180018401fc01840180018001800181018103ff000000000000000000000 +0389:000000000000f8f0b060b060b060306030603fe030603060306030603060306078f000000000000000000000 +038a:0000000000004fc0c300c30083000300030003000300030003000300030003000fc000000000000000000000 +038c:0000000000004780c8e0d0609030303030303030303030303030102018200c40078000000000000000000000 +038e:0000000000007c70d820d8208c400c4006800300030003000300030003000300078000000000000000000000 +038f:0000000000004780c8e0d06090303030303030303030102018200c40048024903cf000000000000000000000 +0390:0000000003800f00dc60c06000001e00060006000600060006000600060006001f8000000000000000000000 +0391:000000000000060006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +0392:000000000000ff00608060c060c060c061807f8060c0606060606060606060c0ff8000000000000000000000 +0393:0000000000007fc0304030403000300030003000300030003000300030003000780000000000000000000000 +0394:00000000000006000e000b000b0011801180118020c020c020c04060406040607fe000000000000000000000 +0395:0000000000007fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +0396:0000000000003fe020c000c00180018003000300060006000c000c00180018203fe000000000000000000000 +0397:000000000000f0f0606060606060606060607fe0606060606060606060606060f0f000000000000000000000 +0398:0000000000000f8011c020e06060606060606f606060606060606060704038801f0000000000000000000000 +0399:0000000000001f800600060006000600060006000600060006000600060006001f8000000000000000000000 +039a:000000000000f0e06180630066006c00780078007c006e006700638061c060e0f07000000000000000000000 +039b:000000000000060006000b000b000b0011801180118020c020c020c040604060e0f000000000000000000000 +039c:000000000000e07060e070e070e070e05960596059604d604e604e6044604460e4f000000000000000000000 +039d:000000000000c07060207020782058204c2046204720432041a040e040e04060e03000000000000000000000 +039e:0000000000007fe0402000000000000000003fc03fc0000000000000000040207fe000000000000000000000 +039f:0000000000000f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 +03a0:000000000000ffe0606060606060606060606060606060606060606060606060606000000000000000000000 +03a1:0000000000007f8030c030603060306030c03780300030003000300030003000780000000000000000000000 +03a3:0000000000007fe060203020180018000c0007000700040008001000202040207fe000000000000000000000 +03a4:0000000000007fe04620060006000600060006000600060006000600060006001f8000000000000000000000 +03a5:000000000000f07060203040188018800d0006000600060006000600060006000f0000000000000000000000 +03a6:000000000600060006000f8017c026e066606660666066606660666076403e801f0006000600060000000000 +03a7:000000000000f07060203040388018800d00060006000b00118011c020c04060e0f000000000000000000000 +03a8:000000000000ef70666066606660666076403f800f00060006000600060006000f0000000000000000000000 +03a9:0000000000000f0011c020c0206060606060606060602040304018800900492079e000000000000000000000 +03aa:30c030c000001f800600060006000600060006000600060006000600060006001f8000000000000000000000 +03ab:30c030c00000f07060203040188018800d0006000600060006000600060006000f0000000000000000000000 +03ac:00000000020006000600040000001f9031d060e060e060c060c060c061e072603c3000000000000000000000 +03ad:00000000020006000600040000000f801fc0206060003f003f00600060203fc01f0000000000000000000000 +03ae:0000000002000600060004000000278079c030c030c030c030c030c030c030c078c000c000c000c000c001e0 +03af:00000000020006000600040000001e00060006000600060006000600060006001f8000000000000000000000 +03b0:000000000200666066600400000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +03b1:00000000000000000000000000001f9031d060e060e060c060c060c061e072603c3000000000000000000000 +03b2:000000000f00198030c030c030c030c031003e00330031c030e030e030603860378030003000300030007800 +03b3:000000000000000000000000000070e0b04030401880188019000d000e0006000e0013001300218021801f00 +03b4:0000000000001f8030001c000e0007000f8011c020e0606060606060704038801f0000000000000000000000 +03b5:00000000000000000000000000000f801fc0206060003f003f00600060203fc01f0000000000000000000000 +03b6:00000000000000007fe000c003000c00180030007000600060006000700030001e00078000c0006000c00380 +03b7:0000000000000000000000000000278079c030c030c030c030c030c030c030c078c000c000c000c000c001e0 +03b8:00000000000000000f8011c020e06060606060607fe0606060606060704038801f0000000000000000000000 +03b9:00000000000000000000000000001e00060006000600060006000600060006001f8000000000000000000000 +03ba:0000000000000000000000000000f1c0630066007c0078007c006e0067006380f1e000000000000000000000 +03bb:0000000000001c001c000e00060006000b000b000b0011801180118020c020c071e000000000000000000000 +03bc:000000000000000000000000000079e030c030c030c030c030c030c030c039c03e6030003000300030007800 +03bd:0000000000000000000000000000f070602030203040184018800c800d000600060000000000000000000000 +03be:00000000000000007fe018003000600038000e0003c0060018006000700038001e00078000c0006000c00380 +03bf:00000000000000000000000000000f8011c020e06060606060606060704038801f0000000000000000000000 +03c0:0000000000000000000000000000fff030c030c030c030c030c030c030c030e0787000000000000000000000 +03c1:00000000000000000000000000000f8011c020e0606060606060606070407880670060006000600060006000 +03c2:00000000000000000000000000000f8011c020e0600060006000600078003f000f80018000c0018007000000 +03c3:00000000000000000000000000000ff011c020606060606060606060704038801f0000000000000000000000 +03c4:00000000000000000000000000007fe00600060006000600060006000600030001e000000000000000000000 +03c5:000000000000000000000000000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +03c6:0000000000000000000000000000098013c026e0666066606660666076403e801f0006000600060006000600 +03c7:00000000000000000000000000006020702018401c800c800700070007000700098009c010c0207020300000 +03c8:0000000000000000000000000000e670666066606660666066606660666076403f800f000600060006000f00 +03c9:00000000000000000000000000006060c030c630c630c630c630c63066207fc0198000000000000000000000 +03ca:00000000000030c030c0000000001e00060006000600060006000600060006001f8000000000000000000000 +03cb:00000000000030c030c00000000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +03cc:00000000020006000600040000000f8011c020e06060606060606060704038801f0000000000000000000000 +03cd:000000000200060006000400000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +03ce:00000000020006000600040000006060c030c630c630c630c630c63066207fc0198000000000000000000000 +03cf:000000000000f0e06180630066006c00780078007c006e006700638061c060e0f07000c001800b0006000200 +03d0:000003800c4010202040ff8020004f8051c060e06060606060606060704038801f0000000000000000000000 +03d1:000000001e0023004180618060c030c00ff000606060b060b060306038401c800f0000000000000000000000 +03d2:0000000000006030d050d8901880188018800d000d00060006000600060006000f0000000000000000000000 +03d3:0180030006006030d050d8901880188018800d000d00060006000600060006000f0000000000000000000000 +03d4:1980198000006030d050d8901880188018800d000d00060006000600060006000f0000000000000000000000 +03d5:000000000600060006000f8017c026e066606660666066606660666076403e801f0006000600060000000000 +03d6:0000000000000000000000703fc0e0604030c630c630c630c630c63066207fc0198000000000000000000000 +03d7:00000000000000000000000000006040b0e0b1c03380378026802c8078c070e06060004001801e0000000000 +03d8:0000000000000f0011c020c020606060606060606060204030401880060006003fc000000000000000000000 +03d9:00000000000000000000000000000f8011c020e06060606060606060704038801f0006000600060000000000 +03da:0000000000000f0011c020c020606000600060006000200030001800060006003fc000000000000000000000 +03db:00000000000000000000002000e00fc010002000600060006000600078003f000f80018000c0018007000000 +03dc:0000000000007fc0304030403000300030803f80308030003000300030003000780000000000000000000000 +03dd:0000000000000000000000401f80300030003000300030003f80300030003000300030003000300000000000 +03de:0000000000003c00180018001800300030003fc000c000c000c001800180018003c000000000000000000000 +03df:00000000000000002000500058001800186031e0364078c060c00180018001a000a000400000000000000000 +03e0:0000000000000f0011c020c02060006001e00660186001e00660004000400080070000000000000000000000 +03e1:0000000000000f0001c000c00060006001e00660186001e00660004000400080010000000000000000000000 +03e2:00000000000036c066606660c630c630c630c630c630c630c630c630c63066207fc001800600180000000000 +03e3:00000000000000000000000036c066606660c630c630c630c630c630c63066207fc001800600180000000000 +03e4:00000000000008e010602060606060606060606060606060706038e01f6000600060006000600060006000f0 +03e5:000000000000000000000000000008e0106020606060606060606060706038e01f60006000600060006000f0 +03e6:000000000000e00060006000600067806fc070e06060606060606060606060c070c0018003003e0000000000 +03e7:000000000000000000000000e0006000600067806fc070e060606060606060c070c0018003003e0000000000 +03e8:000000001f8031c060e020e001c0038007001c0038003000700070007000700070003020306018c00f800000 +03e9:0000000000000000000000001f8031c060e021c0038007001c0038003000700070003020306018c00f800000 +03ea:000018400c800d00070007000b0009801180118010c020c020c0406040604060fff000000000000000000000 +03eb:0000000000000000000018400c800d0007000b000980118010c020c040604060fff000000000000000000000 +03ec:00000000000001e00e0018003000270058807040606060606060606020e011c00f8000000000000000000000 +03ed:0000000000000000000001e00e00180030002700588070406060606020e011c00f8000000000000000000000 +03ee:000000000f000600060006007fe07fe0462046200600060006000600060006000600060006000f0000000000 +03ef:000000000000000000000f00060006007fe07fe0462046200600060006000600060006000f00000000000000 +03f0:00000000000000000000000000006040b0e0b1c03380338026802c8078a070e0606000000000000000000000 +03f1:00000000000000000000000000000f8011c020e06060606060606060704058802700300018000e0001c00000 +03f2:00000000000000000000000000001f8030c020406000600060006000700030c01f8000000000000000000000 +03f3:00000000000000c000c00000000003c000c000c000c000c000c000c000c000c000c020c030c038801f000e00 +03f4:0000000000000f8011c020e06060606060607fe06060606060606060704038801f0000000000000000000000 +03f5:00000000000000000000000000001f803f80600060007f007f00600060003f801f0000000000000000000000 +03f6:00000000000000000000000000003f003f8000c000c01fc01fc000c000c03f803e0000000000000000000000 +03f7:0000000000007800300030003f8030c0306030603060306030c0378030003000780000000000000000000000 +03f8:00000000000000000000000000007800300030003f8030c0306030603060306038c037803000300030007800 +03f9:0000000000000fc01060202020006000600060006000600060002000302018400f8000000000000000000000 +03fa:000000000000e070606070e079604e6044604060406040604060406040604060e0f000000000000000000000 +03fb:00000000000000000000000000000000c0e0c0c0e1c0f2c09cc088c080c080c080d08050803080008000c000 +03fc:00000000000000000000000000000f8011c020e0606060606060606070407880670060006000ff0060006000 +03fd:0000000000003f00608040400040006000600060006000600060004040c021801f0000000000000000000000 +03fe:0000000000000fc01060202020006000600063006300600060002000302018400f8000000000000000000000 +03ff:0000000000003f00608040400040006000600c600c6000600060004040c021801f0000000000000000000000 +0400:1c000f0003807fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +0401:1980198000007fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +0402:000000000000ffc08c400c000c000c000ce00f300c300c300c300c300c300db03ee000000000000000000000 +0403:0180030006007fc0304030403000300030003000300030003000300030003000780000000000000000000000 +0404:0000000000000fc0106020202000600061007f006100600060002000302018400f8000000000000000000000 +0405:0000000000001fe030606020602070003c001e00078001c000e04060406060c07f8000000000000000000000 +0406:0000000000001f800600060006000600060006000600060006000600060006001f8000000000000000000000 +0407:1980198000001f800600060006000600060006000600060006000600060006001f8000000000000000000000 +0408:0000000000001f80060006000600060006000600060006000600060006000600060006000600040038003000 +0409:000000000000ffc02300230023002300230023e02330233023302330a330a330c7e000000000000000000000 +040a:000000000000f780630063006300630063007fe0633063306330633063306330f7e000000000000000000000 +040b:000000000000ffc08c400c000c000c000ce00f300e300c300c300c300c300c301e7000000000000000000000 +040c:018003000600f0e06180630066006c00780078007c006e006700638061c060e0f07000000000000000000000 +040d:38001e000700f0f060606060606060e061606260646068607060606060606060f0f000000000000000000000 +040e:606030c00f00f070602030403040188018800d000d000600060004000c000800780070000000000000000000 +040f:000000000000f0f0606060606060606060606060606060606060606060606060fff00f000600000000000000 +0410:000000000000060006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +0411:000000000000ffc0604060406000600060007f8060c0606060606060606060c0ff8000000000000000000000 +0412:000000000000ff00608060c060c060c061807f8060c0606060606060606060c0ff8000000000000000000000 +0413:0000000000007fc0304030403000300030003000300030003000300030003000780000000000000000000000 +0414:0000000000007ff020c020c020c020c020c020c020c020c040c040c040c040c0fff0c030c030801000000000 +0415:0000000000007fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +0416:000000000000ef30c6106620664036801f000e0007000ec016c0266046608630cf7000000000000000000000 +0417:000000004f807fc060e04060006000e007c00fc000e000600060406060403f801f0000000000000000000000 +0418:000000000000f0f060606060606060e061606260646068607060606060606060f0f000000000000000000000 +0419:606030c00f00f0f060606060606060e061606260646068607060606060606060f0f000000000000000000000 +041a:000000000000f0e06180630066006c00780078007c006e006700638061c060e0f07000000000000000000000 +041b:0000000000003fe010c010c010c010c010c010c020c020c020c0a0c0e0c0e0c0c1e000000000000000000000 +041c:000000000000e07060e070e070e070e05960596059604d604e604e6044604460e4f000000000000000000000 +041d:000000000000f0f0606060606060606060607fe0606060606060606060606060f0f000000000000000000000 +041e:0000000000000f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 +041f:000000000000fff0606060606060606060606060606060606060606060606060f0f000000000000000000000 +0420:0000000000007f8030c030603060306030c03780300030003000300030003000780000000000000000000000 +0421:0000000000000fc01060202020006000600060006000600060002000302018400f8000000000000000000000 +0422:0000000000007fe04620060006000600060006000600060006000600060006001f8000000000000000000000 +0423:000000000000f070602030403040188018800d000d000600060004000c000800780070000000000000000000 +0424:0000000000001f8006000f8017c026e0666066606660666076403e801f0006001f8000000000000000000000 +0425:000000000000f07060203040388018800d00060006000b00118011c020c04060e0f000000000000000000000 +0426:000000000000f1e060c060c060c060c060c060c060c060c060c060c060c060c0fff000300030001000000000 +0427:00000000000079e030c030c030c030c030c030c039c01ec000c000c000c000c001e000000000000000000000 +0428:000000000000f6f0666066606660666066606660666066606660666066606660fff000000000000000000000 +0429:000000000000f6f0666066606660666066606660666066606660666066606660fff000300030001000000000 +042a:000000000000fc00980098001800180018001f801fc018e018601860186018c01f8000000000000000000000 +042b:000000000000e0f0c060c060c060c060fc60fe60c760c360c360c360c360c660fcf000000000000000000000 +042c:000000000000780030003000300030003f003f8031c030c030c030c030c031807f0000000000000000000000 +042d:0000000000003f00608040400040006008600fe0086000600060004040c021801f0000000000000000000000 +042e:000000000000e180c2e0c460c430cc30cc30fc30cc30cc30cc30c420c620c340e18000000000000000000000 +042f:0000000000000ff0186030603060306010600fe003e007600e601c6038607060e0f000000000000000000000 +0430:00000000000000000000000000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +0431:0000000000000fc01f80200020004f8051c060e06060606060606060704038801f0000000000000000000000 +0432:0000000000000000000000000000ff00608060c061807f8060c06060606060c0ff8000000000000000000000 +0433:00000000000000000000000000007fc030403000300030003000300030003000780000000000000000000000 +0434:00000000000000000000000000003ff0118011801180118011802180218021807ff060606060402000000000 +0435:00000000000000000000000000000f0030c0606060607fe060006000300018600f8000000000000000000000 +0436:0000000000000000000000000000ef30c610662066403f801fc0266046608630cf7000000000000000000000 +0437:0000000000000000000000004f807fc06060006007c00fc00060406060403f801f0000000000000000000000 +0438:0000000000000000000000000000f0f0606060e0616062606460686070606060f0f000000000000000000000 +0439:00000000606030c00f0000000000f0f0606060e0616062606460686070606060f0f000000000000000000000 +043a:0000000000000000000000000000f1c0630066007c0078007c006e0067006380f1e000000000000000000000 +043b:00000000000000000000000000001fe008c008c008c010c010c010c050c070c061e000000000000000000000 +043c:0000000000000000000000000000e07060e070e0596059604d604e6046604460e4f000000000000000000000 +043d:0000000000000000000000000000f1e060c060c060c07fc060c060c060c060c0f1e000000000000000000000 +043e:00000000000000000000000000000f8011c020e06060606060606060704038801f0000000000000000000000 +043f:00000000000000000000000000007fe030c030c030c030c030c030c030c030c079e000000000000000000000 +0440:0000000000000000000000000000ef8071c060e06060606060606060604070807f006000600060006000f000 +0441:00000000000000000000000000001f8031c020c06000600060006000704030c01f8000000000000000000000 +0442:00000000000000000000000000007fe0462006000600060006000600060006001f8000000000000000000000 +0443:0000000000000000000000000000f0f0602030403040188018800d000d000600060004000c00080078007000 +0444:0000000000000f0006000600060036c07fe0ef70c630c630c630c6304f207fe036c006000600060006000f00 +0445:0000000000000000000000000000f8f0704038801d000e0007000b8011c020e0f1f000000000000000000000 +0446:000000000000000000000000000079e030c030c030c030c030c030c030c030c07ff000300030001000000000 +0447:000000000000000000000000000079e030c030c030c039c01ec000c000c000c001e000000000000000000000 +0448:0000000000000000000000000000f6f066606660666066606660666066606660fff000000000000000000000 +0449:0000000000000000000000000000f6f066606660666066606660666066606660fff000300030001000000000 +044a:0000000000000000000000000000fc00980098001f801fc018e01860186018c01f8000000000000000000000 +044b:0000000000000000000000000000e0f0c060c060fc60fe60c760c360c360c660fcf000000000000000000000 +044c:00000000000000000000000000007800300030003f003f8031c030c030c031807f0000000000000000000000 +044d:00000000000000000000000000003f006080404008600fe00860006040c021801f0000000000000000000000 +044e:0000000000000000000000000000f18062e0646064307c306c30642066206340f18000000000000000000000 +044f:00000000000000000000000000001fe030c060c020c01fc007c00ec01cc038c071e000000000000000000000 +0450:0000000000001c000f00038000000f0030c0606060607fe060006000300018600f8000000000000000000000 +0451:00000000000019801980000000000f0030c0606060607fe060006000300018600f8000000000000000000000 +0452:000000001000300070003000fe003000378039c030c030c030c030c030c030c078c000c030c038801f000e00 +0453:00000000030006000c00000000007fc030403000300030003000300030003000780000000000000000000000 +0454:00000000000000000000000000000fc01060202061007f0061006000302018400f8000000000000000000000 +0455:00000000000000000000000000001fc030c0304038001e00078001c020c030c03f8000000000000000000000 +0456:00000000000006000600000000001e00060006000600060006000600060006001f8000000000000000000000 +0457:00000000000019801980000000001e00060006000600060006000600060006001f8000000000000000000000 +0458:00000000000000c000c00000000003c000c000c000c000c000c000c000c000c000c020c030c038801f000e00 +0459:00000000000000000000000000003f8013001300130023e023302330a330e330c7e000000000000000000000 +045a:0000000000000000000000000000f7806300630063007fe06330633063306330f7e000000000000000000000 +045b:000000001000300070003000fe003000378039c030c030c030c030c030c030c079e000000000000000000000 +045c:00000000030006000c0000000000f1c0630066007c0078007c006e0067006380f1e000000000000000000000 +045d:000000001c000f00038000000000f0f0606060e0616062606460686070606060f0f000000000000000000000 +045e:00000000606030c00f0000000000f0f0602030403040188018800d000d000600060004000c00080078007000 +045f:000000000000000000000000000079e030c030c030c030c030c030c030c030c07fe00f000600000000000000 +0460:000000000000fef066206620662076207740334037403bc03b80198019801980198000000000000000000000 +0461:0000000000000000000000000000ff7066206620662037403b403b4019801980198000000000000000000000 +0462:000000000000fc0098001800ff80180018001f801fc018e018601860186018c01f8000000000000000000000 +0463:000000000000000000000000fc001800ff8018001f801fc018e01860186018c01f8000000000000000000000 +0464:000000000000e3c0446048204800580059007f0059005800580048004c204640e38000000000000000000000 +0465:0000000000000000000000000000e3c04460482059007f00590048004c204640e38000000000000000000000 +0466:000000000000060006000b000b0009001180118010803fc024c0244044604460e4f000000000000000000000 +0467:0000000000000000000000000000060006000b000900118010803fc024c04460e4f000000000000000000000 +0468:000000000000e60046004b004b0049005180518050807fc064c0644044604460e4f000000000000000000000 +0469:0000000000000000000000000000e60046004b004900518050807fc064c04460e4f000000000000000000000 +046a:000000000000fff060203040188018800d003fc04660c630c630c630c630c630ef7000000000000000000000 +046b:00000000000000000000000000007fe0304018800d003fc04660c630c630c630ef7000000000000000000000 +046c:000000000000fff0b02098408c8086808700ffe0b330b330b330b330b330b330f77000000000000000000000 +046d:0000000000000000000000000000fff0b02098408c808700ffe0b330b330b330f77000000000000000000000 +046e:19800f00060000000f801fc020e04060006000e007c00fc000e00060006000803f00600060003c001f000000 +046f:000019800f000600000000000f801fc020e0406000e007c00fc000e0006000803f00600060003c001f000000 +0470:000000000000ef70666066606660666076403f800f00060006000600060006000f0000000000000000000000 +0471:0000000000000000000000000000e670666066606660666066606660666076403f800f000600060006000f00 +0472:0000000000000f0011c020c02060606060607c6063e0606060602040304018800f0000000000000000000000 +0473:00000000000000000000000000000f0011c020c060607c6063e02040304018800f0000000000000000000000 +0474:000000000000f020607030d0309030801900190019000e000e000e0004000400040000000000000000000000 +0475:0000000000000000000000000000f020607030d03080190019000e000e000400040000000000000000000000 +0476:e38079e01c70f020607030d0309030801900190019000e000e000e0004000400040000000000000000000000 +0477:00000000e38079e01c7000000000f020607030d03080190019000e000e000400040000000000000000000000 +0478:0000000000003000380048004c00cf30ce10ce10cd20cd20cd2049c068c038c010800080018001000f000e00 +0479:00000000000000000000000000003000380048004c00cf30ce10cd20cd2049c068c038c0108001800f000e00 +047a:000000000e001f802ee040604030c030c030c030c030c030c0304020602037401f8007000000000000000000 +047b:0000000000000000000000000e001f802ee040604030c030c0304020602037401f8007000000000000000000 +047c:0c00338040e00e006160c130c630c030c030c030c030c030c630c630c63066207fc019800000000000000000 +047d:0000000000000c00338040e00e006160c130c630c030c030c630c63066207fc0198000000000000000000000 +047e:7fc044400000fef066206620662076207740334037403bc03b80198019801980198000000000000000000000 +047f:0000000000007fc0444000000000fef0662066207740334037403bc019801980198000000000000000000000 +0480:0000000000000fc01060202020006000600060006000600060002000306018e00fe0006000600060006000f0 +0481:00000000000000000000000000000f8010c02040200060006000200030c019c00fc000c000c000c000c001e0 +0482:00000000000000000000000000000000000000000180018003003b00070006e0ec001c001b80180030003000 +0483:00603fc060000000000000000000000000000000000000000000000000000000000000000000000000000000 +0484:03c0066006600000000000000000000000000000000000000000000000000000000000000000000000000000 +0485:0f000c0007000000000000000000000000000000000000000000000000000000000000000000000000000000 +0486:0f0003000e000000000000000000000000000000000000000000000000000000000000000000000000000000 +0487:3c006780c0e00000000000000000000000000000000000000000000000000000000000000000000000000000 +0488:04000a0000000000204050a000000000000000004020a0500000000000000000204050a00000000004000a00 +0489:08000e000000000040e0702000000000000000008070e010000000000000000040e07020000000000e000200 +048a:606030c00f00f0f060606060606060e061606260646068607060606060606060f0f00030006000c001800000 +048b:00000000606030c00f0000000000f0f0606060e0616062606460686070606060f0f00030006000c001800000 +048c:00000000000030003000fe00300030003f003f8031c030c030c030c030c031807f0000000000000000000000 +048d:00000000000000000000000030003000fe0030003f003f8031c030c030c031807f0000000000000000000000 +048e:0000000000007f8030c030603060366033c03f8030c030603000300030003000780000000000000000000000 +048f:0000000000000000000000000000ef8071c060e06060606060606060664073807f8060c0606060006000f000 +0490:0000004000407fc0300030003000300030003000300030003000300030003000780000000000000000000000 +0491:00000000000000000000004000407fc030003000300030003000300030003000780000000000000000000000 +0492:0000000000003fe018201820180018007f0018001800180018001800180018003c0000000000000000000000 +0493:00000000000000000000000000003fe0182018007f00180018001800180018003c0000000000000000000000 +0494:0000000000007fc030403040300030003000378038c038c030c030c030c030c078c000c008c00cc00f800700 +0495:00000000000000000000000000007fc0304030003000378038c038c030c030c078c000c008c00cc007800000 +0496:000000000000ef30c6106620664036801f000e0007800ec016c0266046608630cf7000300030003000000000 +0497:0000000000000000000000000000ef30c610662066403f801fc0266046608630cf7000300030000000000000 +0498:000000004f807fc060e04060006000e007c00fc000e000600060406060403f801f0004000700010006000000 +0499:0000000000000000000000004f807fc06060006007c00fc00060406060403f801f0004000700010006000000 +049a:000000000000f0e06180630066006c00780078007c006e006700638061c060e0f07000300030003000000000 +049b:0000000000000000000000000000f1c0630066007c0078007c006e0067006380f1f000300030000000000000 +049c:000000000000f07060c069806b006e007c0078007c006e006f006b8069c060e0f07000000000000000000000 +049d:0000000000000000000000000000f0e061806b006e0078006e006f006b8061c0f0f000000000000000000000 +049e:000000000000f07060c0fd80630066007c0078007c006e006700638061c060e0f07000000000000000000000 +049f:0000000000000000f0006000fc0061c0630066007c0078007c006e0067006380f1e000000000000000000000 +04a0:000000000000f870b0c0b180330036003c003c003e003700338031c030e03070783000000000000000000000 +04a1:0000000000000000000000000000f8e0b180b3003e003c003e003700338031c078f000000000000000000000 +04a2:000000000000f0f0606060606060606060607fe0606060606060606060606060f0f000300030003000000000 +04a3:0000000000000000000000000000f0f06060606060607fe06060606060606060f0f000300030000000000000 +04a4:000000000000f3f0619061906180618061807f80618061806180618061806180f3c000000000000000000000 +04a5:0000000000000000000000000000f3f06190618061807f806180618061806180f3c000000000000000000000 +04a6:000000000000ff8063006300630063006300636063b063306330633063306330f7b000300230033003e001c0 +04a7:0000000000000000000000000000ff80630063006300636063b0633063306330f7b000300230033001e00000 +04a8:0000000000000e001000218022c064606c606c606c606c606c602640314019800e6000000000000000000000 +04a9:00000000000000000000000000000e001000218022c064606c602640314019800e6000000000000000000000 +04aa:0000000000000fc01060202020006000600060006000600060002000302018400f8004000700010006000000 +04ab:00000000000000000000000000001f8031c020c06000600060006000704030c01f8004000700010006000000 +04ac:0000000000007fe04620060006000600060006000600060006000600060006001f8004000700010006000000 +04ad:00000000000000000000000000007fe0462006000600060006000600060006001f8004000700010006000000 +04ae:000000000000f07060203040188018800d0006000600060006000600060006000f0000000000000000000000 +04af:0000000000000000000000000000000078e030403040188018800d000d000600060006000600060006000f00 +04b0:000000000000f07060203040188018800d0006003fc0060006000600060006000f0000000000000000000000 +04b1:0000000000000000000000000000000078e030403040188018800d000d0006003fc006000600060006000f00 +04b2:000000000000f07060203040388018800d00060006000b00118011c020c04060e0f000300030003000000000 +04b3:0000000000000000000000000000f8f0704038801d000e0007000b8011c020e0f1f000300030003000000000 +04b4:000000000000ff709960186018601860186018601860186018601860186018603ff000300030003000000000 +04b5:0000000000000000000000000000ff70996018601860186018601860186018603ff000300030000000000000 +04b6:00000000000079e030c030c030c030c030c030c039c01ec000c000c000c000c001e000300030003000000000 +04b7:000000000000000000000000000079e030c030c030c030c039c01ec000c000c001e000300030003000000000 +04b8:00000000000079e030c030c030c034c034c034c03dc01ec004c004c004c000c001e000300030003000000000 +04b9:000000000000000000000000000079e030c030c034c034c03dc01ec004c004c001e000300030003000000000 +04ba:00000000000078003000300030003000378039c030c030c030c030c030c030c079e000000000000000000000 +04bb:0000000000000000000000000000780030003000378039c030c030c030c030c079e000000000000000000000 +04bc:0000000000000f0011c0a0c0a060ffe0600060006000600060002000304018800f0000000000000000000000 +04bd:0000000000000000000000000000070018c0b060b060ffe03000300018000c60078000000000000000000000 +04be:0000000000000f0011c0a0c0a060ffe0600060006000600060002000304018800f0006000600060000000000 +04bf:0000000000000000000000000000070018c0b060b060ffe03000300018000c60078003000300030000000000 +04c0:0000000000001f800600060006000600060006000600060006000600060006001f8000000000000000000000 +04c1:606030c00f00ef30c6106620664036801f000e0007000ec016c0266046608630cf7000000000000000000000 +04c2:00000000606030c00f0000000000ef30c610662066403f801fc0266046608630cf7000000000000000000000 +04c3:000000000000f0e06180630066006c00780078007c00670061c060e060706030f0300030027003e001800000 +04c4:0000000000000000000000000000f1c0630066006c007c00670061c060e06060f060006004e007c003000000 +04c5:0000000000003fe010c010c010c010c010c010c020c020c020c0a0c0e0c0e0c0c1e0006000c0018003000000 +04c6:00000000000000000000000000001fe008c008c008c010c010c050c070c070c061e0006000c0018003000000 +04c7:000000000000f0f0606060606060606060607fe0606060606060606060606060f060006004e007c003000000 +04c8:0000000000000000000000000000f1e060c060c060c07fc060c060c060c060c0f0c000c009c00f8006000000 +04c9:000000000000f0f0606060606060606060607fe0606060606060606060606060f0f0006000c0018003000000 +04ca:0000000000000000000000000000f1e060c060c060c07fc060c060c060c060c0f1e000c00180030006000000 +04cb:00000000000079e030c030c030c030c030c030c03dc01ec000c000c000c000c001e0006000c0018003000000 +04cc:000000000000000000000000000079e030c030c030c030c03dc01ec000c000c001e0006000c0018003000000 +04cd:000000000000e07060e070e070e070e05960596059604d604e604e6044604460e4f00030006000c001800000 +04ce:0000000000000000000000000000e07060e070e0596059604d604e6046604460e4f00030006000c001800000 +04cf:0000000000001f800600060006000600060006000600060006000600060006001f8000000000000000000000 +04d0:606030c00f00060006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +04d1:00000000606030c00f00000000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +04d2:198019800000060006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +04d3:00000000000019801980000000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +04d4:0000000000000fe00e20162016001600164027c026403e002600460046104610e7f000000000000000000000 +04d5:00000000000000000000000000001f80364026600e603fe066006600660067603fc000000000000000000000 +04d6:606030c00f007fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +04d7:00000000606030c00f00000000000f0030c0606060607fe060006000300018600f8000000000000000000000 +04d8:0000000000003f0060804040004000600060006000607fe04040404040c021801f0000000000000000000000 +04d9:00000000000000000000000000003f0060804040006000607fe0404040c021801f0000000000000000000000 +04da:1980198000003f0060804040004000600060006000607fe04040404040c021801f0000000000000000000000 +04db:00000000000019801980000000003f0060804040006000607fe0404040c021801f0000000000000000000000 +04dc:198019800000ef30c6106620664036801f000e0007800ec016c0266046608630cf7000000000000000000000 +04dd:0000000000001980198000000000ef30c610662066403f801fc0266046608630cf7000000000000000000000 +04de:198019804f807fc060e04060006000e007c00fc000e000600060406060403f801f0000000000000000000000 +04df:0000000019801980000000004f807fc06060006007c00fc00060406060403f801f0000000000000000000000 +04e0:0000000000007fe040c00180030006000c001f8001c000c000c040c060803f001e0000000000000000000000 +04e1:00000000000000000000000000003fe020c00180030006000c001f8001c000c000c020c030801f000e000000 +04e2:3fc000000000f0f060606060606060e061606260646068607060606060606060f0f000000000000000000000 +04e3:00000000000000003fc000000000f0f0606060e0616062606460686070606060f0f000000000000000000000 +04e4:198019800000f0f060606060606060e061606260646068607060606060606060f0f000000000000000000000 +04e5:0000000000001980198000000000f0f0606060e0616062606460686070606060f0f000000000000000000000 +04e6:1980198000000f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 +04e7:00000000000019801980000000000f8011c020e06060606060606060704038801f0000000000000000000000 +04e8:0000000000000f8011c020e06060606060607fe06060606060606060704038801f0000000000000000000000 +04e9:00000000000000000000000000000f8011c020e060607fe060606060704038801f0000000000000000000000 +04ea:1980198000000f8011c020e06060606060607fe06060606060606060704038801f0000000000000000000000 +04eb:00000000000019801980000000000f8011c020e060607fe060606060704038801f0000000000000000000000 +04ec:1980198000003f00608040400040006008600fe0086000600060004040c021801f0000000000000000000000 +04ed:00000000000019801980000000003f006080404008600fe00860006040c021801f0000000000000000000000 +04ee:3fc000000000f070602030403040188018800d000d000600060004000c000800780070000000000000000000 +04ef:00000000000000003fc000000000f0f0602030403040188018800d000d000600060004000c00080078007000 +04f0:198019800000f070602030403040188018800d000d000600060004000c000800780070000000000000000000 +04f1:0000000000001980198000000000f0f0602030403040188018800d000d000600060004000c00080078007000 +04f2:06c00d801b00f070602030403040188018800d000d000600060004000c000800780070000000000000000000 +04f3:0000000006c00d801b0000000000f0f0602030403040188018800d000d000600060004000c00080078007000 +04f4:19801980000079e030c030c030c030c030c030c039c01ec000c000c000c000c001e000000000000000000000 +04f5:000000000000198019800000000079e030c030c030c039c01ec000c000c000c001e000000000000000000000 +04f6:0000000000007fc03040304030003000300030003000300030003000300030007c000c000c000c0000000000 +04f7:00000000000000000000000000007fc0304030003000300030003000300030007c000c000c00000000000000 +04f8:198019800000e0f0c060c060c060c060fc60fe60c760c360c360c360c360c660fcf000000000000000000000 +04f9:0000000000001980198000000000e0f0c060c060fc60fe60c760c360c360c660fcf000000000000000000000 +04fa:0000000000003fe018201820180018007f0018001800180018001800180018003e0002002200320032001c00 +04fb:00000000000000000000000000003fe0182018007f00180018001800180018003e0002002200320032001c00 +04fc:000000000000f07060203040388018800d00060006000b00118011c020c04060e060026003c0018000000000 +04fd:0000000000000000000000000000f8f0704038801d000e0007000b8011c020c0f0e00060026003c001800000 +04fe:000000000000f07060203040388018800d007fe006000b00118011c020c04060e0f000000000000000000000 +04ff:0000000000000000000000000000f8f0704038801d007fe007000b8011c020e0f1f000000000000000000000 +05d0:0000000000000000000000000000e1e06060306018c03cc067806300c180c0c0f0e000000000000000000000 +1e00:000000000000060006000b000b0009001180118010803fc020c0204040604060e0f000000600090009000600 +1e01:00000000000000000000000000000f8018c010c003c01cc030c030c030c039c01ee000000600090009000600 +1e02:0c000c000000ff00608060c060c060c061807f8060c0606060606060606060c0ff8000000000000000000000 +1e03:0600060020006000e0006000600067806fc070e06060606060606060706078c04f8000000000000000000000 +1e04:000000000000ff00608060c060c060c061807f8060c0606060606060606060c0ff8000000000060006000000 +1e05:0000000020006000e0006000600067806fc070e06060606060606060706078c04f8000000000060006000000 +1e06:000000000000ff00608060c060c060c061807f8060c0606060606060606060c0ff80000000003fc03fc00000 +1e07:0000000020006000e0006000600067806fc070e06060606060606060706078c04f80000000003fc03fc00000 +1e08:03800f001c000fc01060202020006000600060006000600060002000302018400f8002000300018009800700 +1e09:0000000003800f001c00000000001f8031c020c06000600060006000704030c01f8002000300018009800700 +1e0a:060006000000ff0061c060c06060606060606060606060606060606060406180fe0000000000000000000000 +1e0b:06000600006000e00060006000600f6031e020e0606060606060606070e039601e7000000000000000000000 +1e0c:000000000000ff0061c060c06060606060606060606060606060606060406180fe0000000000060006000000 +1e0d:00000000006000e00060006000600f6031e020e0606060606060606070e039601e7000000000060006000000 +1e0e:000000000000ff0061c060c06060606060606060606060606060606060406180fe00000000003fc03fc00000 +1e0f:00000000006000e00060006000600f6031e020e0606060606060606070e039601e70000000003fc03fc00000 +1e10:000000000000ff0061c060c06060606060606060606060606060606060406180fe0002000300018009800700 +1e11:00000000006000e00060006000600f6031e020e0606060606060606070e039601e7002000300018009800700 +1e12:000000000000ff0061c060c06060606060606060606060606060606060406180fe00000004000e001b003180 +1e13:00000000006000e00060006000600f6031e020e0606060606060606070e039601e70000004000e001b003180 +1e14:0e0007003fc000007fc0304030403000300030803f80308030003000302030207fe000000000000000000000 +1e15:1c000f00038000001f801f8000000f0030c0606060607fe060006000300018600f8000000000000000000000 +1e16:07000e003fc000007fc0304030403000300030803f80308030003000302030207fe000000000000000000000 +1e17:03800f001c0000001f801f8000000f0030c0606060607fe060006000300018600f8000000000000000000000 +1e18:0000000000007fc0304030403000300030803f803080300030003000302030207fe0000004000e001b003180 +1e19:00000000000000000000000000000f0030c0606060607fe060006000300018600f80000004000e001b003180 +1e1a:0000000000007fc0304030403000300030803f803080300030003000302030207fe000000e401fc013800000 +1e1b:00000000000000000000000000000f0030c0606060607fe060006000300018600f8000000e401fc013800000 +1e1c:198019800f007fc0304030403000300030803f803080300030003000302030207fe002000300018009800700 +1e1d:00000000198019800f00000000000f0030c0606060607fe060006000300018600f8002000300018009800700 +1e1e:0600060000007fc0304030403000300030803f80308030003000300030003000780000000000000000000000 +1e1f:030003000000038004c004c00c000c000c000c001f800c000c000c000c000c001e0000000000000000000000 +1e20:1f801f8000000fc0106020202000600060006000600061f060602060306018600f8000000000000000000000 +1e21:0000000000001f801f80000000001f2031e060c060c060c031803f0060007fc03fe02060402040207fc03f80 +1e22:060006000000f0f0606060606060606060607fe0606060606060606060606060f0f000000000000000000000 +1e23:0300030010003000700030003000378039c030c030c030c030c030c030c030c079e000000000000000000000 +1e24:000000000000f0f0606060606060606060607fe0606060606060606060606060f0f000000600060000000000 +1e25:0000000010003000700030003000378039c030c030c030c030c030c030c030c079e000000600060000000000 +1e26:198019800000f0f0606060606060606060607fe0606060606060606060606060f0f000000000000000000000 +1e27:0cc00cc010003000700030003000378039c030c030c030c030c030c030c030c079e000000000000000000000 +1e28:000000000000f0f0606060606060606060607fe0606060606060606060606060f0f0100018000c004c003800 +1e29:0000000010003000700030003000378039c030c030c030c030c030c030c030c079e0100018000c004c003800 +1e2a:000000000000f0f0606060606060606060607fe0606060606060606060606060f0f00000198019800f000000 +1e2b:0000000010003000700030003000378039c030c030c030c030c030c030c030c079e00000198019800f000000 +1e2c:0000000000001f800600060006000600060006000600060006000600060006001f8000000e401fc013800000 +1e2d:00000000000006000600000000001e00060006000600060006000600060006001f8000000e401fc013800000 +1e2e:030066606c6000001f80060006000600060006000600060006000600060006001f8000000000000000000000 +1e2f:03800f001c0000001980198000001e00060006000600060006000600060006001f8000000000000000000000 +1e30:03800f001c00f0e06180630066006c00780078007c006e006700638061c060e0f07000000000000000000000 +1e31:01c007806e00e00060006000600061c0630066007c0078007c006e0067006380f1e000000000000000000000 +1e32:000000000000f0e06180630066006c00780078007c006e006700638061c060e0f07000000600060000000000 +1e33:000000006000e00060006000600061c0630066007c0078007c006e0067006380f1e000000600060000000000 +1e34:000000000000f0e06180630066006c00780078007c006e006700638061c060e0f070000000003fc03fc00000 +1e35:000000006000e00060006000600061c0630066007c0078007c006e0067006380f1e0000000003fc03fc00000 +1e36:00000000000078003000300030003000300030003000300030003000302030207fe000000600060000000000 +1e37:000000001e0006000600060006000600060006000600060006000600060006001f8000000600060000000000 +1e38:3fc03fc0000078003000300030003000300030003000300030003000302030207fe000000600060000000000 +1e39:3fc03fc000001e000600060006000600060006000600060006000600060006001f8000000600060000000000 +1e3a:00000000000078003000300030003000300030003000300030003000302030207fe0000000003fc03fc00000 +1e3b:000000001e0006000600060006000600060006000600060006000600060006001f80000000003fc03fc00000 +1e3c:00000000000078003000300030003000300030003000300030003000302030207fe0000004000e001b003180 +1e3d:000000001e0006000600060006000600060006000600060006000600060006001f80000004000e001b003180 +1e3e:03800f001c00e07060e070e070e070e05960596059604d604e604e6044604460e4f000000000000000000000 +1e3f:0000000003800f001c0000000000ddc06ee06660666066606660666066606660ef7000000000000000000000 +1e40:060006000000e07060e070e070e070e05960596059604d604e604e6044604460e4f000000000000000000000 +1e41:0000000000000600060000000000ddc06ee06660666066606660666066606660ef7000000000000000000000 +1e42:000000000000e07060e070e070e070e05960596059604d604e604e6044604460e4f000000600060000000000 +1e43:0000000000000000000000000000ddc06ee06660666066606660666066606660ef7000000600060000000000 +1e44:060006000000c07060207020782058204c2046204720432041a040e040e04060e03000000000000000000000 +1e45:0000000000000600060000000000278079c030c030c030c030c030c030c030c079e000000000000000000000 +1e46:000000000000c07060207020782058204c2046204720432041a040e040e04060e03000000600060000000000 +1e47:0000000000000000000000000000278079c030c030c030c030c030c030c030c079e000000600060000000000 +1e48:000000000000c07060207020782058204c2046204720432041a040e040e04060e030000000003fc03fc00000 +1e49:0000000000000000000000000000278079c030c030c030c030c030c030c030c079e0000000003fc03fc00000 +1e4a:000000000000c07060207020782058204c2046204720432041a040e040e04060e030000004000e001b003180 +1e4b:0000000000000000000000000000278079c030c030c030c030c030c030c030c079e0000004000e001b003180 +1e4c:07001e003c6063c00f0011c020c02060606060606060606060602040304018800f0000000000000000000000 +1e4d:03800f001c0000003c6063c000000f8011c020e06060606060606060704038801f0000000000000000000000 +1e4e:1980198000003c6063c00f0011c020c0206060606060606060602040304018800f0000000000000000000000 +1e4f:1980198000001c6036c0638000000f8011c020e06060606060606060704038801f0000000000000000000000 +1e50:0e0007003fc000000f0011c020c02060606060606060606060602040304018800f0000000000000000000000 +1e51:1c000f00038000003fc03fc000000f8011c020e06060606060606060704038801f0000000000000000000000 +1e52:07000e003fc000000f0011c020c02060606060606060606060602040304018800f0000000000000000000000 +1e53:03800f001c0000003fc03fc000000f8011c020e06060606060606060704038801f0000000000000000000000 +1e54:03800f001c007f8030c030603060306030c03780300030003000300030003000780000000000000000000000 +1e55:0000000003800f001c0000000000ef8071c060e06060606060606060604070807f006000600060006000f000 +1e56:0600060000007f8030c030603060306030c03780300030003000300030003000780000000000000000000000 +1e57:0000000000000600060000000000ef8071c060e06060606060606060604070807f006000600060006000f000 +1e58:0c000c000000ff00618060c060c060c060807f007c006e006700638061c060e0f07000000000000000000000 +1e59:0000000000000600060000000000738034c038c0300030003000300030003000780000000000000000000000 +1e5a:000000000000ff00618060c060c060c060807f007c006e006700638061c060e0f07000000600060000000000 +1e5b:0000000000000000000000000000738034c038c0300030003000300030003000780000001800180000000000 +1e5c:3fc03fc00000ff00618060c060c060c060807f007c006e006700638061c060e0f07000000600060000000000 +1e5d:0000000000003fc03fc000000000738034c038c0300030003000300030003000780000001800180000000000 +1e5e:000000000000ff00618060c060c060c060807f007c006e006700638061c060e0f070000000003fc03fc00000 +1e5f:0000000000000000000000000000738034c038c03000300030003000300030007800000000003fc03fc00000 +1e60:0600060000001fe030606020602070003c001e00078001c000e04060406060c07f8000000000000000000000 +1e61:00000000000006000600000000001fc030c0304038001e00078001c020c030c03f8000000000000000000000 +1e62:0000000000001fe030606020602070003c001e00078001c000e04060406060c07f8000000600060000000000 +1e63:00000000000000000000000000001fc030c0304038001e00078001c020c030c03f8000000600060000000000 +1e64:0c700de003801fe030606020602070003c001e00078001c000e04060406060c07f8000000000000000000000 +1e65:06000600000003800f001c0000001fc030c0304038001e00078001c020c030c03f8000000000000000000000 +1e66:060036c0198006001fe030606020602070003c000e0003c000e04060406060c07f8000000000000000000000 +1e67:06000600000030c01980060000001fc030c0304038001e00078001c020c030c03f8000000000000000000000 +1e68:0600060000001fe030606020602070003c001e00078001c000e04060406060c07f8000000600060000000000 +1e69:00000000000006000600000000001fc030c0304038001e00078001c020c030c03f8000000600060000000000 +1e6a:0600060000007fe04620060006000600060006000600060006000600060006001f8000000000000000000000 +1e6b:00000c000c000000040004000c007fc00c000c000c000c000c000c000c200e40078000000000000000000000 +1e6c:0000000000007fe04620060006000600060006000600060006000600060006001f8000000600060000000000 +1e6d:0000000000000000040004000c007fc00c000c000c000c000c000c000c200e40078000000600060000000000 +1e6e:0000000000007fe04620060006000600060006000600060006000600060006001f80000000003fc03fc00000 +1e6f:0000000000000000040004000c007fc00c000c000c000c000c000c000c200e400780000000003fc03fc00000 +1e70:0000000000007fe04620060006000600060006000600060006000600060006001f80000004000e001b003180 +1e71:0000000000000000040004000c007fc00c000c000c000c000c000c000c200e400780000004000e001b003180 +1e72:000000000000f070602060206020602060206020602060206020602070403fc01f8000001980198000000000 +1e73:000000000000000000000000000079e030c030c030c030c030c030c030c039c01e6000001980198000000000 +1e74:000000000000f070602060206020602060206020602060206020602070403fc01f8000000e401fc013800000 +1e75:000000000000000000000000000079e030c030c030c030c030c030c030c039c01e6000000e401fc013800000 +1e76:000000000000f070602060206020602060206020602060206020602070403fc01f80000004000e001b003180 +1e77:000000000000000000000000000079e030c030c030c030c030c030c030c039c01e60000004000e001b003180 +1e78:07001e003c6063c00000f0706020602060206020602060206020602070403fc01f8000000000000000000000 +1e79:03800f001c0000003c6063c0000079e030c030c030c030c030c030c030c039c01e6000000000000000000000 +1e7a:1980198000003fc0f07060206020602060206020602060206020602070403fc01f8000000000000000000000 +1e7b:00001980198000003fc03fc0000079e030c030c030c030c030c030c030c039c01e6000000000000000000000 +1e7c:0e401fc01380e0e060403080308030801900190019000c000e000e0004000400040000000000000000000000 +1e7d:000000000e401fc0138000000000f070602030403040188018800d000d000600060000000000000000000000 +1e7e:000000000000e0e060403080308030801900190019000c000e000e0004000400040000000600060000000000 +1e7f:0000000000000000000000000000f070602030403040188018800d000d000600060000000600060000000000 +1e80:1c000f000380fef066206620662076207740334037403bc03b80198019801980198000000000000000000000 +1e81:000000001c000f00038000000000ff7066206620662037403b403b4019801980198000000000000000000000 +1e82:03800f001c00fef066206620662076207740334037403bc03b80198019801980198000000000000000000000 +1e83:0000000003800f001c0000000000ff7066206620662037403b403b4019801980198000000000000000000000 +1e84:198019800000fef066206620662076207740334037403bc03b80198019801980198000000000000000000000 +1e85:0000000000001980198000000000ff7066206620662037403b403b4019801980198000000000000000000000 +1e86:060006000000fef066206620662076207740334037403bc03b80198019801980198000000000000000000000 +1e87:0000000000000600060000000000ff7066206620662037403b403b4019801980198000000000000000000000 +1e88:000000000000fef066206620662076207740334037403bc03b80198019801980198000000000060006000000 +1e89:0000000000000000000000000000ff7066206620662037403b403b4019801980198000000000060006000000 +1e8a:060006000000f07060203040388018800d00060006000b00118011c020c04060e0f000000000000000000000 +1e8b:0000000000000600060000000000f8f0704038801d000e0007000b8011c020e0f1f000000000000000000000 +1e8c:198019800000f07060203040388018800d00060006000b00118011c020c04060e0f000000000000000000000 +1e8d:0000000000001980198000000000f8f0704038801d000e0007000b8011c020e0f1f000000000000000000000 +1e8e:060006000000f07060203040188018800d0006000600060006000600060006000f0000000000000000000000 +1e8f:0000000000000600060000000000f0f0602030403040188018800d000d000600060004000c00080078007000 +1e90:020007000d8018c000003fe020c000c001800180030006000c000c00180018203fe000000000000000000000 +1e91:00000000020007000d8018c000007fe060e041c0038007000e001c00382070607fe000000000000000000000 +1e92:0000000000003fe020c000c00180018003000300060006000c000c00180018203fe000000600060000000000 +1e93:00000000000000000000000000007fe060e041c0038007000e001c00382070607fe000000600060000000000 +1e94:0000000000003fe020c000c00180018003000300060006000c000c00180018203fe0000000003fc03fc00000 +1e95:00000000000000000000000000007fe060e041c0038007000e001c00382070607fe0000000003fc03fc00000 +1e96:0000000010003000700030003000378039c030c030c030c030c030c030c030c079e0000000003fc03fc00000 +1e97:000018c018c00000040004000c007fc00c000c000c000c000c000c000c200e40078000000000000000000000 +1e98:0000060009000900060000000000ff7066206620662037403b403b4019801980198000000000000000000000 +1e99:0000060009000900060000000000f0f0602030403040188018800d000d000600060004000c00080078007000 +1e9a:00000200010001000200000000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +1e9b:060006000000038004c004c00c000c000c003c000c000c000c000c000c000c001e0000000000000000000000 +1e9c:00000000038004c004c00c000c000d800f003e000c001c003c006c000c000c001e0000000000000000000000 +1e9d:00000000038004c004c00c007f807f800c003c000c000c000c000c000c000c001e0000000000000000000000 +1e9e:000000000f80386030e061c0638067006e00638061c060e06060606068606cc0ef8000000000000000000000 +1e9f:0000000000001f8030001c000e0007000f8011c020e0606060606060704038801f0000000000000000000000 +1ea0:000000000000060006000b000b0009001180118010803fc020c0204040604060e0f000000600060000000000 +1ea1:00000000000000000000000000000f8018c010c003c01cc030c030c030c039c01ee000000600060000000000 +1ea2:0e0013000300060006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +1ea3:000000000e0013000300060000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +1ea4:307079e0cd80060006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +1ea5:00000000307079e0cd80000000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +1ea6:31c078f0cc30060006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +1ea7:0000000031c078f0cc30000000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +1ea8:30e07930cc30066006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +1ea9:0000000030e07930cc30006000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +1eaa:3c6063c006001980000006000b000b000900118010803fc020c0204040604060e0f000000000000000000000 +1eab:3c6063c0000006000f00198000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +1eac:06000f001980060006000b000b0009001180118010803fc020c0204040604060e0f000000600060000000000 +1ead:04000e001b00318060c0000000000f8018c010c003c01cc030c030c030c039c01ee000000600060000000000 +1eae:01c007802e401f8006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +1eaf:01c007800e00000030c00f0000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +1eb0:38001e0027401f8006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +1eb1:38001e000700000030c00f0000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +1eb2:0700098023401f8006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +1eb3:0e0013000300060020401f8000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +1eb4:3c6063c020401f8006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +1eb5:1c6036c06380000020401f8000000f8018c010c003c01cc030c030c030c039c01ee000000000000000000000 +1eb6:20401f800000060006000b000b0009001180118010803fc020c0204040604060e0f000000600060000000000 +1eb7:00000000000020401f80000000000f8018c010c003c01cc030c030c030c039c01ee000000600060000000000 +1eb8:0000000000007fc0304030403000300030803f803080300030003000302030207fe000000600060000000000 +1eb9:00000000000000000000000000000f0030c0606060607fe060006000300018600f8000000600060000000000 +1eba:0e00130003007fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +1ebb:00000e00130003000600000000000f0030c0606060607fe060006000300018600f8000000000000000000000 +1ebc:1c6036c063807fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +1ebd:000000001c6036c06380000000000f0030c0606060607fe060006000300018600f8000000000000000000000 +1ebe:307079e0cd807fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +1ebf:00000000307079e0cd80000000000f0030c0606060607fe060006000300018600f8000000000000000000000 +1ec0:31c078f0cc307fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +1ec1:0000000031c078f0cc30000000000f0030c0606060607fe060006000300018600f8000000000000000000000 +1ec2:30e07930cc3000607fc0304030403000300030803f80308030003000302030207fe000000000000000000000 +1ec3:000030e07930cc300060000000000f0030c0606060607fe060006000300018600f8000000000000000000000 +1ec4:3c6063c00600198000007fc030403040300030803f80308030003000302030207fe000000000000000000000 +1ec5:3c6063c0000006000f00198000000f0030c0606060607fe060006000300018600f8000000000000000000000 +1ec6:06000f0019807fc0304030403000300030803f803080300030003000302030207fe000000600060000000000 +1ec7:000004000e001b00318060c000000f0030c0606060607fe060006000300018600f8000000600060000000000 +1ec8:0e00130006001f800600060006000600060006000600060006000600060006001f8000000000000000000000 +1ec9:00000e00130003000600000000001e00060006000600060006000600060006001f8000000000000000000000 +1eca:0000000000001f800600060006000600060006000600060006000600060006001f8000000600060000000000 +1ecb:00000000000006000600000000001e00060006000600060006000600060006001f8000000600060000000000 +1ecc:0000000000000f0011c020c020606060606060606060606060602040304018800f0000000600060000000000 +1ecd:00000000000000000000000000000f8011c020e06060606060606060704038801f0000000600060000000000 +1ece:0e00130003000f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 +1ecf:0000000000000000006000f000300fa011c020e06060606060606060704038801f0000000000000000000000 +1ed0:307079e0cd800f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 +1ed1:00000000307079e0cd80000000000f8011c020e06060606060606060704038801f0000000000000000000000 +1ed2:31c078f0cc300f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 +1ed3:0000000031c078f0cc30000000000f8011c020e06060606060606060704038801f0000000000000000000000 +1ed4:30e079b0cc3000600f0011c020c02060606060606060606060602040304018800f0000000000000000000000 +1ed5:0000000030e079b0cc30006000000f0011c020e06060606060606060704038801f0000000000000000000000 +1ed6:3c6063c00600198000000f0011c020c0206060606060606060602040304018800f0000000000000000000000 +1ed7:3c6063c0000006000f00198000000f8011c020e06060606060606060704038801f0000000000000000000000 +1ed8:06000f0019800f0011c020c020606060606060606060606060602040304018800f0000000600060000000000 +1ed9:04000e001b00318060c0000000000f8011c020e06060606060606060704038801f0000000600060000000000 +1eda:0e603cf070300fa011c020c020606060606060606060606060602040304018800f0000000000000000000000 +1edb:0000000000000e003c6070f000300fa011c020e06060606060606060704038801f0000000000000000000000 +1edc:e06078f01c300fa011c020c020606060606060606060606060602040304018800f0000000000000000000000 +1edd:0000000070003c000e6000f000300fa011c020e06060606060606060704038801f0000000000000000000000 +1ede:1c6036f006300fa011c020c020606060606060606060606060602040304018800f0000000000000000000000 +1edf:000000001c00360006600cf000300fa011c020e06060606060606060704038801f0000000000000000000000 +1ee0:7260fef09c300fa011c020c020606060606060606060606060602040304018800f0000000000000000000000 +1ee1:0000000039007f004e6000f000300fa011c020e06060606060606060704038801f0000000000000000000000 +1ee2:006000f000300fa011c020c020606060606060606060606060602040304018800f0000000600060000000000 +1ee3:0000000000000000006000f000300fa011c020e06060606060606060704038801f0000000600060000000000 +1ee4:000000000000f070602060206020602060206020602060206020602070403fc01f8000000600060000000000 +1ee5:000000000000000000000000000079e030c030c030c030c030c030c030c039c01e6000000600060000000000 +1ee6:0e0013000300f670602060206020602060206020602060206020602070403fc01f8000000000000000000000 +1ee7:000000000e00130003000600000079e030c030c030c030c030c030c030c039c01e6000000000000000000000 +1ee8:0e603cd07010f070602060206020602060206020602060206020602070403fc01f8000000000000000000000 +1ee9:0000000007001e00386000d0001079e030c030c030c030c030c030c030c039c01e6000000000000000000000 +1eea:70603cd00e10f070602060206020602060206020602060206020602070403fc01f8000000000000000000000 +1eeb:0000000070003c000e6000d0001079e030c030c030c030c030c030c030c039c01e6000000000000000000000 +1eec:1c00266006d00c10f07060206020602060206020602060206020602070403fc01f8000000000000000000000 +1eed:0e00130003000600006000d0001079e030c030c030c030c030c030c030c039c01e6000000000000000000000 +1eee:7100db608e700010f07060206020602060206020602060206020602070403fc01f8000000000000000000000 +1eef:1c6036c063800000006000d0001079e030c030c030c030c030c030c030c039c01e6000000000000000000000 +1ef0:006000d00010f070602060206020602060206020602060206020602070403fc01f8000000600060000000000 +1ef1:0000000000000000006000d0001079e030c030c030c030c030c030c030c039c01e6000000600060000000000 +1ef2:38001e000700f07060203040188018800d0006000600060006000600060006000f0000000000000000000000 +1ef3:000000001c000f00038000000000f0f0602030403040188018800d000d000600060004000c00080078007000 +1ef4:000000000000f07060203040188018800d0006000600060006000600060006000f0000000600060000000000 +1ef5:0000000000000000000000000000f0f0602030403040188018800d000d000600060004000c0008007b007300 +1ef6:0e0013000300f67060203040188018800d0006000600060006000600060006000f0000000000000000000000 +1ef7:00000e0013000300060000000000f0f0602030403040188018800d000d000600060004000c00080078007000 +1ef8:1c6036c06380f07060203040188018800d0006000600060006000600060006000f0000000000000000000000 +1ef9:000000001c6036c0638000000000f0f0602030403040188018800d000d000600060004000c00080078007000 +1efa:000000000000fe006c006c006c006c006c006c006c006c006c006c006c206c20ffe000000000000000000000 +1efb:00000000f3c030c030c07fe07fe030c030c030c030c030c030c030c030c030c0fdf000000000000000000000 +1efc:0000000007000c001800300030006000618063c060e060606060606070403f801f0000000000000000000000 +1efd:000000000000000007000c00180030003000618063c060e06060606070403f801f0000000000000000000000 +1efe:000000000000f0f0602030403040188018800d000d000600060004006c009800980070000000000000000000 +1eff:0000000000000000000000000000f0f0602030403040188018800d000d000600060004006c00980098007000 +1f00:000000000f0003000e00000000001f9031d060e060e060c060c060c061e072603c3000000000000000000000 +1f01:00000000078006000380000000001f9031d060e060e060c060c060c061e072603c3000000000000000000000 +1f02:00000000798018c07040000000001f9031d060e060e060c060c060c061e072603c3000000000000000000000 +1f03:00000000798060c03840000000001f9031d060e060e060c060c060c061e072603c3000000000000000000000 +1f04:0000000078c019807100000000001f9031d060e060e060c060c060c061e072603c3000000000000000000000 +1f05:0000000078c061803900000000001f9031d060e060e060c060c060c061e072603c3000000000000000000000 +1f06:1c40238000000f0003000e0000001f9031d060e060e060c060c060c061e072603c3000000000000000000000 +1f07:1c40238000000f000c00070000001f9031d060e060e060c060c060c061e072603c3000000000000000000000 +1f08:0000f0003000e60006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +1f09:0000f000c000760006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +1f0a:3000180008000300f3003580e580048008c008c008401fe01060102020302030707000000000000000000000 +1f0b:3000180008000300f300c5807580048008c008c008401fe01060102020302030707000000000000000000000 +1f0c:1800300020000300f3003580e580048008c008c008401fe01060102020302030707000000000000000000000 +1f0d:1800300020000300f300c5807580048008c008c008401fe01060102020302030707000000000000000000000 +1f0e:000071008e000300f3003580e580048008c008c008401fe01060102020302030707000000000000000000000 +1f0f:000071008e000300f300c5807580048008c008c008401fe01060102020302030707000000000000000000000 +1f10:000000000f0003000e00000000000f801fc0206060003f003f00600060203fc01f0000000000000000000000 +1f11:000000000f000c000700000000000f801fc0206060003f003f00600060203fc01f0000000000000000000000 +1f12:00000000798018c07040000000000f801fc0206060003f003f00600060203fc01f0000000000000000000000 +1f13:00000000798060c03840000000000f801fc0206060003f003f00600060203fc01f0000000000000000000000 +1f14:0000000078c019807100000000000f801fc0206060003f003f00600060203fc01f0000000000000000000000 +1f15:0000000078c061803900000000000f801fc0206060003f003f00600060203fc01f0000000000000000000000 +1f18:f0003000e0007fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +1f19:f000c00070007fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +1f1a:f6003300e1007fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +1f1b:f600c30071007fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +1f1c:f1803300e2007fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +1f1d:f180c30072007fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +1f20:000000000f0003000e0000000000278079c030c030c030c030c030c030c030c078c000c000c000c000c001e0 +1f21:000000000f000c00070000000000278079c030c030c030c030c030c030c030c078c000c000c000c000c001e0 +1f22:00000000798018c0704000000000278079c030c030c030c030c030c030c030c078c000c000c000c000c001e0 +1f23:00000000798060c0384000000000278079c030c030c030c030c030c030c030c078c000c000c000c000c001e0 +1f24:0000000078c01980710000000000278079c030c030c030c030c030c030c030c078c000c000c000c000c001e0 +1f25:0000000078c06180390000000000278079c030c030c030c030c030c030c030c078c000c000c000c000c001e0 +1f26:1c40238000000f0003000e000000278079c030c030c030c030c030c030c030c078c000c000c000c000c001e0 +1f27:1c40238000000f000c0007000000278079c030c030c030c030c030c030c030c078c000c000c000c000c001e0 +1f28:f0003000e000f0f0606060606060606060607fe0606060606060606060606060f0f000000000000000000000 +1f29:f000c0007000f0f0606060606060606060607fe0606060606060606060606060f0f000000000000000000000 +1f2a:f6003300e100f0f0606060606060606060607fe0606060606060606060606060f0f000000000000000000000 +1f2b:f600c3007100f0f0606060606060606060607fe0606060606060606060606060f0f000000000000000000000 +1f2c:f1803300e200f0f0606060606060606060607fe0606060606060606060606060f0f000000000000000000000 +1f2d:f180c3007200f0f0606060606060606060607fe0606060606060606060606060f0f000000000000000000000 +1f2e:e71068e0c000f0f0606060606060606060607fe0606060606060606060606060f0f000000000000000000000 +1f2f:f710c8e07000f0f0606060606060606060607fe0606060606060606060606060f0f000000000000000000000 +1f30:000000000f0003000e00000000001e00060006000600060006000600060006001f8000000000000000000000 +1f31:000000000f000c000700000000001e00060006000600060006000600060006001f8000000000000000000000 +1f32:00000000798018c07040000000001e00060006000600060006000600060006001f8000000000000000000000 +1f33:00000000798060c03840000000001e00060006000600060006000600060006001f8000000000000000000000 +1f34:0000000078c019807100000000001e00060006000600060006000600060006001f8000000000000000000000 +1f35:0000000078c061803900000000001e00060006000600060006000600060006001f8000000000000000000000 +1f36:1c40238000000f0003000e0000001e00060006000600060006000600060006001f8000000000000000000000 +1f37:1c40238000000f000c00070000001e00060006000600060006000600060006001f8000000000000000000000 +1f38:f0003000e0000f800600060006000600060006000600060006000600060006001f8000000000000000000000 +1f39:f000c00070000f800600060006000600060006000600060006000600060006001f8000000000000000000000 +1f3a:f6003300e1001f800600060006000600060006000600060006000600060006001f8000000000000000000000 +1f3b:f600c30071000f800600060006000600060006000600060006000600060006001f8000000000000000000000 +1f3c:f1003300e2001f800600060006000600060006000600060006000600060006001f8000000000000000000000 +1f3d:f180c30072001f800600060006000600060006000600060006000600060006001f8000000000000000000000 +1f3e:e71068e0c0001f800600060006000600060006000600060006000600060006001f8000000000000000000000 +1f3f:f710c8e070001f800600060006000600060006000600060006000600060006001f8000000000000000000000 +1f40:000000000f0003000e00000000000f8011c020e06060606060606060704038801f0000000000000000000000 +1f41:000000000f000c000700000000000f8011c020e06060606060606060704038801f0000000000000000000000 +1f42:00000000798018c07040000000000f8011c020e06060606060606060704038801f0000000000000000000000 +1f43:00000000798060c03840000000000f8011c020e06060606060606060704038801f0000000000000000000000 +1f44:0000000078c019807100000000000f8011c020e06060606060606060704038801f0000000000000000000000 +1f45:0000000078c061803900000000000f8011c020e06060606060606060704038801f0000000000000000000000 +1f48:f0003000e0000f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 +1f49:f000c00070000f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 +1f4a:f6003300e1000f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 +1f4b:f600c30071000f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 +1f4c:f1003300e2000f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 +1f4d:f180c30072000f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 +1f50:000000000f0003000e000000000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +1f51:000000000f000c0007000000000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +1f52:00000000798018c070400000000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +1f53:00000000798060c038400000000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +1f54:0000000078c0198071000000000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +1f55:0000000078c0618039000000000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +1f56:1c40238000000f0003000e00000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +1f57:1c40238000000f000c000700000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +1f59:f000c0007000f07060203040188018800d0006000600060006000600060006000f0000000000000000000000 +1f5b:f600c3007100f07060203040188018800d0006000600060006000600060006000f0000000000000000000000 +1f5d:f180c3007200f07060203040188018800d0006000600060006000600060006000f0000000000000000000000 +1f5f:f710c8e07000f07060203040188018800d0006000600060006000600060006000f0000000000000000000000 +1f60:000000000f0003000e00000000006060c030c630c630c630c630c63066207fc0198000000000000000000000 +1f61:000000000f000c000700000000006060c030c630c630c630c630c63066207fc0198000000000000000000000 +1f62:00000000798018c07040000000006060c030c630c630c630c630c63066207fc0198000000000000000000000 +1f63:00000000798060c03840000000006060c030c630c630c630c630c63066207fc0198000000000000000000000 +1f64:0000000078c019807100000000006060c030c630c630c630c630c63066207fc0198000000000000000000000 +1f65:0000000078c061803900000000006060c030c630c630c630c630c63066207fc0198000000000000000000000 +1f66:1c40238000000f0003000e0000006060c030c630c630c630c630c63066207fc0198000000000000000000000 +1f67:1c40238000000f000c00070000006060c030c630c630c630c630c63066207fc0198000000000000000000000 +1f68:f0003000e0000f0011c020c0206060606060606060602040304018800900492079e000000000000000000000 +1f69:f000c00070000f0011c020c0206060606060606060602040304018800900492079e000000000000000000000 +1f6a:f6003300e1000f0011c020c0206060606060606060602040304018800900492079e000000000000000000000 +1f6b:f600c30071000f0011c020c0206060606060606060602040304018800900492079e000000000000000000000 +1f6c:f1803300e2000f0011c020c0206060606060606060602040304018800900492079e000000000000000000000 +1f6d:f180c30072000f0011c020c0206060606060606060602040304018800900492079e000000000000000000000 +1f6e:e71068e0c0000f0011c020c0206060606060606060602040304018800900492079e000000000000000000000 +1f6f:f710c8e070000f0011c020c0206060606060606060602040304018800900492079e000000000000000000000 +1f70:000000000c0006000200000000001f9031d060e060e060c060c060c061e072603c3000000000000000000000 +1f71:00000000030006000400000000001f9031d060e060e060c060c060c061e072603c3000000000000000000000 +1f72:0000000000000c000600020000000f801fc0206060003f003f00600060203fc01f0000000000000000000000 +1f73:00000000000003000600040000000f801fc0206060003f003f00600060203fc01f0000000000000000000000 +1f74:000000000c000600020000000000278079c030c030c030c030c030c030c030c078c000c000c000c000c001e0 +1f75:0000000003000600040000000000278079c030c030c030c030c030c030c030c078c000c000c000c000c001e0 +1f76:000000000c0006000200000000001e00060006000600060006000600060006001f8000000000000000000000 +1f77:00000000030006000400000000001e00060006000600060006000600060006001f8000000000000000000000 +1f78:000000000c0006000200000000000f8011c020e06060606060606060704038801f0000000000000000000000 +1f79:00000000030006000400000000000f8011c020e06060606060606060704038801f0000000000000000000000 +1f7a:000000000c00060002000000000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +1f7b:000000000300060004000000000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +1f7c:000000000c0006000200000000006060c030c630c630c630c630c63066207fc0198000000000000000000000 +1f7d:0000000007000c000800000000006060c030c630c630c630c630c63066207fc0198000000000000000000000 +1f80:000000000f0003000e00000000001f9031d060e060e060c060c060c061e072603c3000000600060007000000 +1f81:000000000f000c000700000000001f9031d060e060e060c060c060c061e072603c3000000600060007000000 +1f82:00000000798018c07040000000001f9031d060e060e060c060c060c061e072603c3000000600060007000000 +1f83:00000000798060c03840000000001f9031d060e060e060c060c060c061e072603c3000000600060007000000 +1f84:0000000078c019807100000000001f9031d060e060e060c060c060c061e072603c3000000600060007000000 +1f85:0000000078c061803900000000001f9031d060e060e060c060c060c061e072603c3000000600060007000000 +1f86:1c40238000000f0003000e0000001f9031d060e060e060c060c060c061e072603c3000000600060007000000 +1f87:1c40238000000f000c00070000001f9031d060e060e060c060c060c061e072603c3000000600060007000000 +1f88:00000000f0003600e6000b000b0009001180118010803fc020c0204040604060e0f000000040004000600000 +1f89:00000000f000c60076000b000b0009001180118010803fc020c0204040604060e0f000000040004000600000 +1f8a:3000180008000300f3003580e580048008c008c008401fe01060102020302030707000000040004000600000 +1f8b:3000180008000300f300c5807580048008c008c008401fe01060102020302030707000000040004000600000 +1f8c:0c00180010000300f3003580e580048008c008c008401fe01060102020302030707000000040004000600000 +1f8d:0c00180010000300f300c5807580048008c008c008401fe01060102020302030707000000040004000600000 +1f8e:000071008e000300f3003580e580048008c008c008401fe01060102020302030707000000040004000600000 +1f8f:000071008e000300f300c5807580048008c008c008401fe01060102020302030707000000060006000700000 +1f90:000000000f0003000e0000000000278079c030c030c030c030c030c030c030c078c000c030c030c038c001e0 +1f91:000000000f000c00070000000000278079c030c030c030c030c030c030c030c078c000c030c030c038c001e0 +1f92:0000000000007b00198070800000278079c030c030c030c030c030c030c030c078c000c030c030c038c001e0 +1f93:0000000000007b00618038800000278079c030c030c030c030c030c030c030c078c000c030c030c038c001e0 +1f94:00000000000078c0198071000000278079c030c030c030c030c030c030c030c078c000c030c030c038c001e0 +1f95:00000000000078c0618039000000278079c030c030c030c030c030c030c030c078c000c030c030c038c001e0 +1f96:1c40238000000f0003000e000000278079c030c030c030c030c030c030c030c078c000c030c030c038c001e0 +1f97:1c40238000000f000c0007000000278079c030c030c030c030c030c030c030c078c000c030c030c038c001e0 +1f98:f0003000e000f0f0606060606060606060607fe0606060606060606060606060f0f000000060006000700000 +1f99:f000c0007000f0f0606060606060606060607fe0606060606060606060606060f0f000000060006000700000 +1f9a:f6003300e100f0f0606060606060606060607fe0606060606060606060606060f0f000000060006000700000 +1f9b:f600c3007100f0f0606060606060606060607fe0606060606060606060606060f0f000000060006000700000 +1f9c:f1803300e200f0f0606060606060606060607fe0606060606060606060606060f0f000000060006000700000 +1f9d:f180c3007200f0f0606060606060606060607fe0606060606060606060606060f0f000000060006000700000 +1f9e:e71068e0c000f0f0606060606060606060607fe0606060606060606060606060f0f000000060006000700000 +1f9f:f710c8e07000f0f0606060606060606060607fe0606060606060606060606060f0f000000060006000700000 +1fa0:000000000f0003000e00000000006060c030c630c630c630c630c63066207fc0198000000600060007000000 +1fa1:000000000f000c000700000000006060c030c630c630c630c630c63066207fc0198000000600060007000000 +1fa2:000000003d800cc03840000000006060c030c630c630c630c630c63066207fc0198000000600060007000000 +1fa3:000000003d8030c01c40000000006060c030c630c630c630c630c63066207fc0198000000600060007000000 +1fa4:000000003c600cc03880000000006060c030c630c630c630c630c63066207fc0198000000600060007000000 +1fa5:000000003c6030c01c80000000006060c030c630c630c630c630c63066207fc0198000000600060007000000 +1fa6:1c40238000000f0003000e0000006060c030c630c630c630c630c63066207fc0198000000600060007000000 +1fa7:1c40238000000f000c00070000006060c030c630c630c630c630c63066207fc0198000000600060007000000 +1fa8:0710f8e03000ef0011c020c0206060606060606060602040304018800900492079e000000000000000000000 +1fa9:f000c00070000f0011c020c0206060606060606060602040304018800900492079e000000060006000700000 +1faa:f6003300e1000f0011c020c0206060606060606060602040304018800900492079e000000060006000700000 +1fab:f600c30071000f0011c020c0206060606060606060602040304018800900492079e000000060006000700000 +1fac:f1803300e2000f0011c020c0206060606060606060602040304018800900492079e000000060006000700000 +1fad:f180c30072000f0011c020c0206060606060606060602040304018800900492079e000000060006000700000 +1fae:e71068e0c0000f0011c020c0206060606060606060602040304018800900492079e000000060006000700000 +1faf:f710c8e070000f0011c020c0206060606060606060602040304018800900492079e000000060006000700000 +1fb0:00000000000010800f00000000001f9031d060e060e060c060c060c061e072603c3000000000000000000000 +1fb1:0000000000001f801f80000000001f9031d060e060e060c060c060c061e072603c3000000000000000000000 +1fb2:000000000c0006000200000000001f9031d060e060e060c060c060c061e072603c3000000600060007000000 +1fb3:00000000000000000000000000001f9031d060e060e060c060c060c061e072603c3000000600060007000000 +1fb4:00000000030006000400000000001f9031d060e060e060c060c060c061e072603c3000000600060007000000 +1fb6:0000000000001c402380000000001f9031d060e060e060c060c060c061e072603c3000000000000000000000 +1fb7:0000000000001c402380000000001f9031d060e060e060c060c060c061e072603c3000000600060007000000 +1fb8:10800f000000060006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +1fb9:1f801f800000060006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +1fba:00000000c000660026000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +1fbb:000000003000660046000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +1fbc:000000000000060006000b000b0009001180118010803fc020c0204040604060e0f000000060006000700000 +1fbd:000000000e000100010006000000000000000000000000000000000000000000000000000000000000000000 +1fbe:0000000000000000000000000000000000000000000000000000000000000000000000000600060007000000 +1fbf:000000000f0003000e0000000000000000000000000000000000000000000000000000000000000000000000 +1fc0:1c803f8027000000000000000000000000000000000000000000000000000000000000000000000000000000 +1fc1:1c803f8027000000198019800000000000000000000000000000000000000000000000000000000000000000 +1fc2:000000000c000600020000000000278079c030c030c030c030c030c030c030c078c000c030c030c038c001e0 +1fc3:0000000000000000000000000000278079c030c030c030c030c030c030c030c078c000c030c030c038c001e0 +1fc4:0000000003000600040000000000278079c030c030c030c030c030c030c030c078c000c030c030c038c001e0 +1fc6:0000000000001c40238000000000278079c030c030c030c030c030c030c030c078c000c000c000c000c001e0 +1fc7:0000000000001c40238000000000278079c030c030c030c030c030c030c030c078c000c030c030c038c001e0 +1fc8:c000600020007fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +1fc9:6000c00080007fc0304030403000300030803f803080300030003000302030207fe000000000000000000000 +1fca:c00060002000f0f0606060606060606060607fe0606060606060606060606060f0f000000000000000000000 +1fcb:6000c0008000f0f0606060606060606060607fe0606060606060606060606060f0f000000000000000000000 +1fcc:000000000000f0f0606060606060606060607fe0606060606060606060606060f0f000000060006000700000 +1fcd:3d800cc038400000000000000000000000000000000000000000000000000000000000000000000000000000 +1fce:3cc00d8039000000000000000000000000000000000000000000000000000000000000000000000000000000 +1fcf:1c40238000000f0003000e000000000000000000000000000000000000000000000000000000000000000000 +1fd0:00000000000010800f00000000001e00060006000600060006000600060006001f8000000000000000000000 +1fd1:0000000000001f801f80000000001e00060006000600060006000600060006001f8000000000000000000000 +1fd2:0000000018000c0064c060c000001e00060006000600060006000600060006001f8000000000000000000000 +1fd3:000000000300060064c060c000001e00060006000600060006000600060006001f8000000000000000000000 +1fd6:00000000000000001c40238000001e00060006000600060006000600060006001f8000000000000000000000 +1fd7:00001c40238000003180318000001e00060006000600060006000600060006001f8000000000000000000000 +1fd8:10800f0000001f800600060006000600060006000600060006000600060006001f8000000000000000000000 +1fd9:1f801f8000001f800600060006000600060006000600060006000600060006001f8000000000000000000000 +1fda:000000000000df806600260006000600060006000600060006000600060006001f8000000000000000000000 +1fdb:00000000000067e0c1808180018001800180018001800180018001800180018007e000000000000000000000 +1fdd:3d8030c01c400000000000000000000000000000000000000000000000000000000000000000000000000000 +1fde:3cc031801d000000000000000000000000000000000000000000000000000000000000000000000000000000 +1fdf:1c40238000000f000c0007000000000000000000000000000000000000000000000000000000000000000000 +1fe0:00000000000010800f000000000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +1fe1:0000000000001f801f800000000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +1fe2:0000000018000c0064c060c0000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +1fe3:000000000300060064c060c0000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +1fe4:000000000f0003000e00000000000f8011c020e0606060606060606070407880670060006000600060006000 +1fe5:000000000f000c000700000000000f8011c020e0606060606060606070407880670060006000600060006000 +1fe6:0000000000001c4023800000000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +1fe7:00001c402380000031803180000079e030c030c030c030c030c030c030c038800f0000000000000000000000 +1fe8:10800f000000f07060203040188018800d0006000600060006000600060006000f0000000000000000000000 +1fe9:1f801f800000f07060203040188018800d0006000600060006000600060006000f0000000000000000000000 +1fea:c00060002000f07060203040188018800d0006000600060006000600060006000f0000000000000000000000 +1feb:6000c0008000f07060203040188018800d0006000600060006000600060006000f0000000000000000000000 +1fec:f000c00070007f8030c030603060306030c03780300030003000300030003000780000000000000000000000 +1fed:000018000c0064c060c000000000000000000000000000000000000000000000000000000000000000000000 +1fee:00000300060064c060c000000000000000000000000000000000000000000000000000000000000000000000 +1fef:00000c0006000200000000000000000000000000000000000000000000000000000000000000000000000000 +1ff2:000000000c0006000200000000006060c030c630c630c630c630c63066207fc0198000000600060007000000 +1ff3:00000000000000000000000000006060c030c630c630c630c630c63066207fc0198000000600060007000000 +1ff4:00000000030006000400000000006060c030c630c630c630c630c63066207fc0198000000600060007000000 +1ff6:0000000000001c402380000000006060c030c630c630c630c630c63066207fc0198000000600060007000000 +1ff7:0000000000001c402380000000006060c030c630c630c630c630c63066207fc0198000000600060007000000 +1ff8:0000c00060002f0011c020c020606060606060606060606060602040304018800f0000000000000000000000 +1ff9:000000006000cf0091c020c020606060606060606060606060602040304018800f0000000000000000000000 +1ffa:0000c00060002f0011c020c0206060606060606060602040304018800900492079e000000000000000000000 +1ffb:000000006000cf0091c020c0206060606060606060602040304018800900492079e000000000000000000000 +1ffc:0000000000000f0011c020c0206060606060606060602040304018800900492079e000000060006000700000 +1ffd:0000030006000400000000000000000000000000000000000000000000000000000000000000000000000000 +1ffe:0000078006000380000000000000000000000000000000000000000000000000000000000000000000000000 +2000:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2001:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2002:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2003:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2004:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2005:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2006:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2007:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2008:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2009:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +200a:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +200b:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +200c:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +200d:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +200e:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +200f:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 2010:00000000000000000000000000000000000000003fc03fc00000000000000000000000000000000000000000 2011:00000000000000000000000000000000000000003fc03fc00000000000000000000000000000000000000000 2012:00000000000000000000000000000000000000003fc03fc00000000000000000000000000000000000000000 @@ -377,29 +1758,1184 @@ 201b:000006000f000f000c000c000600030001000000000000000000000000000000000000000000000000000000 201c:00000cc019801980198019801980198000000000000000000000000000000000000000000000000000000000 201d:0000198019801980198019801980330000000000000000000000000000000000000000000000000000000000 -201e:0000000000000000000000000000000000000000000000001980198019801980198033000000000000000000 -201f:00001980198019801980198019800cc000000000000000000000000000000000000000000000000000000000 +201e:0000000000000000000000000000000000000000000000003b803b803b801980198033000000000000000000 +201f:00001dc01dc01dc01980198019800cc000000000000000000000000000000000000000000000000000000000 2020:0000000000000600060006003fc03fc006000600060006000600060006000600060000000000000000000000 2021:0000000000000600060006003fc03fc006000600060006003fc03fc006000600060000000000000000000000 2022:0000000000000000000000000000000007000f800f800f800700000000000000000000000000000000000000 +2023:000000000000000000000000000008000c000e000f000e000c00080000000000000000000000000000000000 +2024:000000000000000000000000000000000000000000000000000007000f800f80070000000000000000000000 +2025:000000000000000000000000000000000000000000000000000071c0fbe0fbe071c000000000000000000000 2026:0000000000000000000000000000000000000000000000000000222077707770222000000000000000000000 +2027:000000000000000000000000000000000000000007000f800f80070000000000000000000000000000000000 +2028:00000000000000004200620052004a004600420000000200020002000200020003e000000000000000000000 +2029:0000000000003fe07e607e607e607e607e603e60026002600260026002600260026000000000000000000000 +202a:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +202b:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +202c:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +202d:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +202e:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +202f:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 2030:000000000000318049804b003300060006000c000c001800180036c03920692066c000000000000000000000 -2032:0000060006000600060006000600000000000000000000000000000000000000000000000000000000000000 -2033:0000198019801980198019801980000000000000000000000000000000000000000000000000000000000000 -2039:000000000000000000000000000000000180030006000c0018000c0006000300018000000000000000000000 -203a:0000000000000000000000000000000018000c00060003000180030006000c00180000000000000000000000 +2031:000000000000318049804b003300060006000cc00d20192018c036c03920692066c000000000000000000000 +2032:000003000300060006000c000c00000000000000000000000000000000000000000000000000000000000000 +2033:00000cc00cc01980198033003300000000000000000000000000000000000000000000000000000000000000 +2034:00003330333066606660ccc0ccc0000000000000000000000000000000000000000000000000000000000000 +2035:00000c000c000600060003000300000000000000000000000000000000000000000000000000000000000000 +2036:000033003300198019800cc00cc0000000000000000000000000000000000000000000000000000000000000 +2037:0000ccc0ccc06660666033303330000000000000000000000000000000000000000000000000000000000000 +2038:0000000000000000000000000000000000000000000000000000000000000000000006000f00198030c06060 +2039:000000000000000000000000000000000180030006000c000600030001800000000000000000000000000000 +203a:0000000000000000000000000000000018000c000600030006000c0018000000000000000000000000000000 +203b:0000000000000000000086104620204010800900c630c6300900108020404620861000000000000000000000 203c:0000000019801980198019801980198019801980198019801980000000001980198000000000000000000000 +203d:000000000f001f803dc02cc00cc00cc00d800f000e000c000c00000000000c000c0000000000000000000000 203e:00003fc03fc00000000000000000000000000000000000000000000000000000000000000000000000000000 +203f:0000000000000000000000000000000000000000000000000000000000000000801060603fc01f8000000000 +2040:00001f803fc06060801000000000000000000000000000000000000000000000000000000000000000000000 +2041:000000000180018003000300060006000e000e001b001b003180318060c060c0000000000000000000000000 +2042:0000000000000000090006001f80060009000000492030c0fff030c049200000000000000000000000000000 +2043:00000000000000000000000000000000000000001f801f801f80000000000000000000000000000000000000 +2044:00000060006000c000c00180018003000300060006000c000c00180018003000300000000000000000000000 +2045:000000000fc00fc00e000e000e000e000fc00fc00e000e000e000e000e000fc00fc000000000000000000000 +2046:000000003f003f0007000700070007003f003f00070007000700070007003f003f0000000000000000000000 +2047:0000000039c07fe0ef708630063006300c600840108031803180000000003180318000000000000000000000 +2048:000000003c607e60e76083600360036006600c60186030603060000000003060306000000000000000000000 +2049:0000000063c067e06e70683060306030606060c0618063006300000000006300630000000000000000000000 +204a:000000000000000000000000000000003f803f80008000800080010001000100010000000000000000000000 +204b:000000000000ff8027c027e027e027e027c02780240024002400240024002400240000000000000000000000 +204c:00000000000000000000000000003fe07c80fc80fc80fc807c803fe000000000000000000000000000000000 +204d:0000000000000000000000000000ff8027c027e027e027e027c0ff8000000000000000000000000000000000 +204e:000000000000000000000000000000000000000000001080090006001f800600090010800000000000000000 +204f:000000000000000000000000000000000c001e001e000c00000000000c001e001e00180018000c0006000200 +2050:00000000000000000e003f8071c060c00000000000000000000060c071c03f800e0000000000000000000000 +2051:0000000000000000090006001f80060009000000090006001f80060009000000000000000000000000000000 +2052:00000000386038c038c0018001800300030006000c000c001800180031c031c061c000000000000000000000 +2053:00000000000000000000000000000000000000001c203e6036c067c043800000000000000000000000000000 +2054:00000000000000000000000000000000000000000000000000000000000000001f803fc06060801000000000 +2055:00000000000000000000000004004440248015000e00ffe00e00150024804440040000000000000000000000 +2056:00000000000000000000000000e000e000e038003800380000e000e000e00000000000000000000000000000 +2057:0000249024904920492092409240000000000000000000000000000000000000000000000000000000000000 +2058:000000000000000000000e000e000e000000e0e0e0e0e0e000000e000e000e00000000000000000000000000 +2059:00000000000000000000e0e0e0e0e0e000000e000e000e000000e0e0e0e0e0e0000000000000000000000000 +205a:0000000000000e000e000e00000000000000000000000000000000000e000e000e0000000000000000000000 +205b:00000e000e000e0000000000000000000000e0e0e0e0e0e0000000000000000000000e000e000e0000000000 +205c:00000000000000000000e4e0e4e0e4e004000400ffe004000400e4e0e4e0e4e0000000000000000000000000 +205d:000000000e000e000e000000000000000e000e000e000000000000000e000e000e0000000000000000000000 +205e:000000000e000e000e00000000000e000e000e00000000000e000e000e00000000000e000e000e0000000000 +205f:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2060:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2061:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2062:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2063:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2064:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2066:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2067:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2068:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2069:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +206a:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +206b:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +206c:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +206d:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +206e:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +206f:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2070:0000000007000f80118010c030c030c030c0308018801f000e00000000000000000000000000000000000000 +2071:000000000600060000001e001e0006000600060006001f801f80000000000000000000000000000000000000 +2074:0000000000800180038005800980118021803fe07fe001800180000000000000000000000000000000000000 +2075:000000000fc00fc0100020003f8031c000e00060206030c01f80000000000000000000000000000000000000 +2076:0000000007000c001800300067806fc070e0606070403f801f00000000000000000000000000000000000000 +2077:000000001fe03fe0604000c00080018001000300020006000400000000000000000000000000000000000000 +2078:000000000f00118030c018800d0006000b00118030c018800f00000000000000000000000000000000000000 +2079:000000000f8011c020e0606070e03f601e6000c0018007003c00000000000000000000000000000000000000 +207a:000000000000060006001f801f80060006000000000000000000000000000000000000000000000000000000 +207b:000000000000000000001f801f80000000000000000000000000000000000000000000000000000000000000 +207c:0000000000001f801f80000000001f801f800000000000000000000000000000000000000000000000000000 +207d:0000000000c001800380030007000600070003000380018000c0000000000000000000000000000000000000 +207e:00000000300018001c000c000e0006000e000c001c0018003000000000000000000000000000000000000000 +207f:00000000000000000000278079c030c030c030c030c030c079e0000000000000000000000000000000000000 +2080:00000000000000000000000000000000000007000f80118010c030c030c030c0308018801f000e0000000000 +2081:000000000000000000000000000000000000020006000e001e003600060006000600060006003fc000000000 +2082:0000000000000000000000000000000000001f003f8061c040c0018003000c00180030207fe07fe000000000 +2083:0000000000000000000000000000000000000f801fc020e000e007c00fc000e0406060403f801f0000000000 +2084:00000000000000000000000000000000000000800180038005800980118021803fe07fe00180018000000000 +2085:0000000000000000000000000000000000000fc00fc0100020003f8031c000e00060206030c01f8000000000 +2086:00000000000000000000000000000000000007000c001800300067806fc070e0606070403f801f0000000000 +2087:0000000000000000000000000000000000001fe03fe0604000c0008001800100030002000600040000000000 +2088:0000000000000000000000000000000000000f00118030c018800d0006000b00118030c018800f0000000000 +2089:0000000000000000000000000000000000000f8011c020e0606070e03f601e6000c0018007003c0000000000 +208a:0000000000000000000000000000000000000000000000000000060006001f801f8006000600000000000000 +208b:0000000000000000000000000000000000000000000000000000000000001f801f8000000000000000000000 +208c:00000000000000000000000000000000000000000000000000001f801f80000000001f801f80000000000000 +208d:00000000000000000000000000000000000000c001800380030007000600070003000380018000c000000000 +208e:000000000000000000000000000000000000300018001c000c000e0006000e000c001c001800300000000000 +2090:0000000000000000000000000000000000000000000000000f8018c010c003c01cc030c039c01ee000000000 +2091:0000000000000000000000000000000000000000000000000f0030c060607fe06000300018600f8000000000 +2092:0000000000000000000000000000000000000000000000000f8011c020e060606060704038801f0000000000 +2093:000000000000000000000000000000000000000000000000f8f0704038800f000f0011c020e0f1f000000000 +2094:0000000000000000000000000000000000000000000000001f00618000c000607fe0606030c00f0000000000 +2095:00000000000000000000000000000000000010003000700030003000378039c030c030c030c079e000000000 +2096:0000000000000000000000000000000000006000e0006000638066007c0078006e0067006380f1e000000000 +2097:0000000000000000000000000000000000001e000600060006000600060006000600060006001f8000000000 +2098:000000000000000000000000000000000000000000000000ddc06ee066606660666066606660ef7000000000 +2099:000000000000000000000000000000000000000000000000278079c030c030c030c030c030c079e000000000 +209a:00000000000000000000000000000000000000000000ef8071c060e060606060604070807f0060006000f000 +209b:0000000000000000000000000000000000000000000000001fc030c038001e00078001c030c03f8000000000 +209c:000000000000000000000000000000000000040004000c007fc00c000c000c000c000c200e40078000000000 +20a0:0000000000001f8031c020c0600060006fe06620760036401fc00640060006200fe000000000000000000000 +20a1:0000024002400fc014e024a02480690069006900720072007200240034203c404f8048004800000000000000 +20a2:0000000000000fc01060202020006e6066b06730660066006600260036201e400f8000000000000000000000 +20a3:0000000000007fc030403040300030007f80300030007f003000300030003000780000000000000000000000 +20a4:0000000000000f801cc018c01800180018007e007e0018001800180018003e207fe061c00000000000000000 +20a5:0000000000000000008000800100ddc06ee066606e606e607660766066606660ef7040008000800000000000 +20a6:000000000000c0706020702078205820fff046204720fff041a040e040e04060e03000000000000000000000 +20a7:000000000000fe00c300c180c580cd80df00fe70ccc0ccc0cc60cc30cdb0cdb0e76000000000000000000000 +20a8:000000000000fc00c600c300c300c300c200fce0e310f300d9e0cc70c730c3b0e1e000000000000000000000 +20a9:000000000000fef06620662066207620fff0334037403bc03b80198019801980198000000000000000000000 +20aa:0000000000000000000000003f607f60c360db60db60db60db60db60d960dfc0df8000000000000000000000 +20ab:00c001c000c01ff000c01ec063c041c0c0c0c0c0c0c0c0c0e1c072c03ce000007fe000000000000000000000 20ac:0000000000000f801040202020006000ff8060006000ff0060002000300018400f8000000000000000000000 +20ad:000000000000f0e06180630066006c007800fff07c006e006700638061c060e0f07000000000000000000000 +20ae:0000000000007fe0462006000640068007200e40168027000e001600260006001f8000000000000000000000 +20af:0000000000000000020004003e00d98018c018c030c030c0308060e06190f390dde001800180018000000000 +20b0:000000000000000003c00720062006200320034003c0118039805fc08ec00460006001800000000000000000 +20b1:0000000000007f8030c0fff03060fff030c03780300030003000300030003000780000000000000000000000 +20b2:0000020002000fc0126022202200620062006200620063f06260226032601a600f8002000200000000000000 +20b3:000000000000060006000b000b0009001180fff01080fff020c0204040604060e0f000000000000000000000 +20b4:000000000000ff00c18080c080c001c0ffe00f003c00ffe0e000c040c04060c03fc000000000000000000000 +20b5:0000020002000fc0126022202200620062006200620062006200220032201e400f8002000200000000000000 +20b6:0000000000000000110011003300fff03300330033003300330033003310339031e000000000000000000000 +20b7:0000000000000ff018303010301038001e000f0003c06ce0927092309230d2607fc000000000000000000000 +20b8:00000000fff0fff000000000fff0fff006000600060006000600060006000600060000000000000000000000 +20b9:00000000fff0fff00e000380fff0fff001800700fe00700038001c000e000700038000000000000000000000 +20ba:00000000000030003100320034003900320034007830b03030307030b02030c03f0000000000000000000000 +20bb:000000006000900090007f803fe030303030303030303ab07560300018000fc007c000000000000000000000 +20bc:000000000000000000000000060006000f001fc026e066606660c630c630c630c63000000000000000000000 +20bd:0000000000007f8030c030603060306030c0378030003000fff0300030003000780000000000000000000000 +20be:0000000004800fc014e024a024a064b064b06000600060006000200030001e00ffe000000000000000000000 +20bf:000012001200ff00608060c060c060c061807f8060c0606060606060606060c0ff8012001200000000000000 +20c0:0000000007001dc03060306060006000600060006000306030601dc0070000007ff000000000000000000000 +20d0:180030007fe0ffe0000000000000000000000000000000000000000000000000000000000000000000000000 +20d1:03000180ffc0ffe0000000000000000000000000000000000000000000000000000000000000000000000000 +20d2:0000060006000600060006000600060006000600060006000600060006000600060006000600060006000000 +20d3:0000000000000600060006000600060006000600060006000600060006000600060006000600000000000000 +20d4:40005f0060c07820000000000000000000000000000000000000000000000000000000000000000000000000 +20d5:00200fa0306041e0000000000000000000000000000000000000000000000000000000000000000000000000 +20d6:30006000ffe06000300000000000000000000000000000000000000000000000000000000000000000000000 +20d7:018000c0ffe000c0018000000000000000000000000000000000000000000000000000000000000000000000 +20d8:000000000000000000000000000000000f0010801080108010800f0000000000000000000000000000000000 +20d9:000000000000000000000000000000000f00108013e011c010800f0000000000000000000000000000000000 +20da:000000000000000000000000000000000f00108011c013e010800f0000000000000000000000000000000000 +20db:6660666000000000000000000000000000000000000000000000000000000000000000000000000000000000 +20dc:db60db6000000000000000000000000000000000000000000000000000000000000000000000000000000000 +20dd:000000000000000000001f8020404020402080108010801080104020402020401f8000000000000000000000 +20de:0000000000000000fff0801080108010801080108010801080108010801080108010fff00000000000000000 +20df:0000000000000000000006000900108020404020801080104020204010800900060000000000000000000000 +20e0:00000000000000000f001080204060205020881084108210811040a04060204010800f000000000000000000 +20e1:318060c0ffe060c0318000000000000000000000000000000000000000000000000000000000000000000000 +20e2:0000000000003fc0c030801080108010801080108010801080108010801080108010c0303fc0000000000000 +20e3:0000000000007fe0a050c0308010801080108010801080108010801080108010c030a0507fe0000000000000 +20e4:000006000600060009000900090010801080108020402040204040204020402080108010fff0000000000000 +20e5:000000006000600030003000180018000c000c000600030003000180018000c000c000000000000000000000 +20e6:0000198019801980198019801980198019801980198019801980198019801980198000000000000000000000 +20e7:fff0001000100010001000100010001000100010001000100010001000100010001000000000000000000000 +20e8:0000000000000000000000000000000000000000000000000000000000000000000000000000666066600000 +20e9:fff0fff0c030c030000000000000000000000000000000000000000000000000000000000000000000000000 +20ea:000000000000000000000000180030006000fff0fff060003000180000000000000000000000000000000000 +20eb:0000000000000cc00cc00cc00cc00cc019801980198019803300330033003300330000000000000000000000 +20ec:000000000000000000000000000000000000000000000000000000000000000000007ff07fe000c001800300 +20ed:00000000000000000000000000000000000000000000000000000000000000000000ffe07fe0300018000c00 +20ee:0000000000000000000000000000000000000000000000000000000000000000000020006000fff060002000 +20ef:0000000000000000000000000000000000000000000000000000000000000000000000400060fff000600040 +20f0:090006001f800600090000000000000000000000000000000000000000000000000000000000000000000000 +2100:00007c00c60006007e00c620c660cec07780030006e00d901b00330063004300019000e00000000000000000 +2101:00007c00c60006007e00c620c660cec07780030007e00e301e0031e060304030063003e00000000000000000 +2102:0000000000001f8028e0486048004800480048004800480048004800486028e01f8000000000000000000000 +2103:6000900090006fc01060202020006000600060006000600060002000302018400f8000000000000000000000 +2104:0000000000000c000c003f004c804c008c008c008c004c004c803f000c000fe00fe000000000000000000000 +2105:00007c00c600c000c000c020c060c6c07d80030007e00e301e30363066304630063003e00000000000000000 +2106:00007c00c600c000c000c020c060c6c07d80030006300e301e30363066304630063003e00000000000000000 +2107:00000000000000000000000000000f801fc0206060003f003f00600060203fc01f0000000000000000000000 +2108:0000000000003f00608040400040086008600fe0086008600060404040c021801f0000000000000000000000 +2109:6000900090006ff00c100c100c000c000c200fe00c200c000c000c000c000c001e0000000000000000000000 +210a:0000000000000000000000000f9018f03060306060c060c060c023801f8003e01f006300630066003e001c00 +210b:00000000000078708c908c906ce00d601ac01cc018c038c0598091809190919060e000000000000000000000 +210c:0000000000001c6033c061806000c000c700d980e0c07060706038301c300c306830b060006000c079009e00 +210d:00000000000079e0492049204920492049204f2049204920492049204920492079e000000000000000000000 +210e:000000000c000c000c00180018001b8037c038c030c0618061806180c300c300c38000000000000000000000 +210f:000000000c000c000f80f80018001b8037c038c030c0618061806180c300c300c38000000000000000000000 +2110:00000000000007e03cc070c000c000c000c000c000c000c000c000c000c000c000c0008019801f000c000000 +2111:000000000fe03fc0600061c003a003800380038001c001c060c0e0c070c070c0388039001e00000000000000 +2112:00000000000019c023204620464027801c000c001800180030007020b020ac40638000000000000000000000 +2113:00000000000001c00320062006400c400c800c8019001a0034003800300078c08f0000000000000000000000 +2114:00000000cc00cc00ffe0cc00cc00cc00cde0ce70cc30cc30cc30cc30cc30ce70cde000000000000000000000 +2115:0000000000007820482064206420522052204920492044a044a042604260412041e000000000000000000000 +2116:00000000000087008200c200c260a290a290929092908a908a60860086f08200c30000000000000000000000 +2117:0000000000000f00108020402f4059a059a059a05f20582058203840204010800f0000000000000000000000 +2118:0000000000003fc043204630263006600cc08f007c00180018001800b000b000600000000000000000000000 +2119:0000000000007f8048c0486048204820486048c04f8048004800480048004800780000000000000000000000 +211a:0000000000001f8028c0486048204820482048204820482048204820486028c01f800600038001c000000000 +211b:0000000000003fc043204630263006600cc00f000d80198019801990b0d0b0d0606000000000000000000000 +211c:00000000000078e0cd3066303630466006c0078006c006c086c0c460e8607070602000000000000000000000 +211d:0000000000007f8048c0486048204820486048c04f804980498048c048c04860786000000000000000000000 +211e:000000000000ff00618060c060c060c060807f007c006e306740638061c062e0f47000000000000000000000 +211f:78000f000100ff0062c062c062c064c064807f007c006e0067006b8069c070e0f07020002000000000000000 +2120:00003d1041b03950051045103910000000000000000000000000000000000000000000000000000000000000 +2121:00000000000000000000000000000000f80020002f40284028402f40284028402f7000000000000000000000 +2122:00007d1011b01150111011101110000000000000000000000000000000000000000000000000000000000000 +2123:f0001e000200e2e064403480348038801900190019001e001e002e0024002400440040004000000000000000 +2124:0000000000007fe07fe002400240048004800900090012001200240024007fe07fe000000000000000000000 +2125:000000000000000000007fc04180030006000c001f80030006000c001f8001c000c040c060803f001e000000 +2126:0000000000000f0011c020c0206060606060606060602040304018800900492079e000000000000000000000 +2127:00000000000079e049200900118020c0204060606060606060606040304038800f0000000000000000000000 +2128:000000000f8011c020e040600060006000e011c00fc010e00060006000606060b06030401f800f0000000000 +2129:00000000000000000000000000001f8006000600060006000600060006000600078000000000000000000000 +212a:000000000000f0e06180630066006c00780078007c006e006700638061c060e0f07000000000000000000000 +212b:06000f0019800f0006000b000b0009001180118010803fc020c0204040604060e0f000000000000000000000 +212c:0000000000003fc043204630263006600cc00f000d80186018601830b830b66063c000000000000000000000 +212d:0000000000000f1039e073006300e600e600e600e380e1c0e0c0e10070007c203fc00f000000000000000000 +212e:00000000000000000e00318060c060c0e0e0ffe0e000e000e0006040604031800e0000000000000000000000 +212f:000000000000000000000000000003800c40188031006600f8006040608031001e0000000000000000000000 +2130:00000000000019e02310461046603f80060007c01e00380071e06610601020601f8000000000000000000000 +2131:0000000000103fe04fc04100222006400fc03e404c80980018001800b000b000600000000000000000000000 +2132:00000000000003c00180018001800180018021803f80218001800180418041807fc000000000000000000000 +2133:0000000000000c3014502ca02ca02ca05960596059605960b2c0b2c0b2d0b2d098e000000000000000000000 +2134:000000000000000000000000000003800c4018a030a06070e0206040608031001e0000000000000000000000 +2135:000000000000c180c1c0e0e0706038203c404e80c700e380e1c070e038703830e03000000000000000000000 +2136:000000000000c000ff807fc000c0004000400040004000400040004000407fe0ffc000000000000000000000 +2137:000000000000600078003e00070001000100010001000100018002c004e03c60782000000000000000000000 +2138:000000000000c000ff807fc00080018001800180018001800180018001800300030000000000000000000000 +2139:000000000000000006000f000f00060000003f000f000f000f000f000f000f003fc000000000000000000000 +213a:000000000000000000000f903fd07060c0d08190801080108010803040603fc00f8000000000000000000000 +213b:00000000000000000000000000000000f80080008000e91088a094409c40a2a0a31000000000000000000000 +213c:0000000000000000000000000000ffe0248024802480248024802480249024903c6000000000000000000000 +213d:00000000000000000000000000000000f020902048402480250013001200090009001480248024801f000000 +213e:0000000000007fe0482048204800480048004800480048004800480048004800780000000000000000000000 +213f:000000000000fff0909090909090909090909090909090909090909090909090f0f000000000000000000000 +2140:0000000000007fe04800240012000900048002400240048009001200240048007fe000000000000000000000 +2141:0000000000001f00318060c060c060607c60006000600060006060c060c031801f0000000000000000000000 +2142:0000000000007fc07fc000c000c000c000c000c000c000c000c000c000c000c000c000000000000000000000 +2143:00000000000000c000c000c000c000c000c000c000c000c000c000c000c07fc07fc000000000000000000000 +2144:0000000000000600060006000600060006000f000f001980198030c030c06060606000000000000000000000 +2145:0000000000003e00258024402420242048204820482048209040904090809700f80000000000000000000000 +2146:0000000001e001200120012001200e40324042404240424084808480848084807f8000000000000000000000 +2147:00000000000000000000000000000f801260241048204fe048009000900051803e0000000000000000000000 +2148:0000000000000000078004800780000000000f000900090009001200120012001e0000000000000000000000 +2149:000000000000000003c0024003c0000000000780048004800480090009000900090012002400780000000000 +214a:0000000000000c000c007f804c404c204c204c200c400f800c000c000c000fe00fe000000000000000000000 +214b:0000000067807fc01860386078606c600ee007c007801f003180318031801f000e0000000000000000000000 +214c:000000000180e240242024202410241024107f20a4a0a440a4a07f2024202400240024002400240024001800 +214d:000038006c006c006c00c620fe60c6c0c780030007e00e301e0031e060304030063003e00000000000000000 +214e:000000000000000000000000000003c001800180018011801f801180018021803fc000000000000000000000 +214f:000000000000000000000000000000004440aaa0aaa0aaa0aaa0aaa044406660999000000000000000000000 +2150:000018003800380018001820186018c019803f0006000c001bf030306060406000c000c00180018003000000 +2151:000018003800380018001820186018c019803f0006000c0019e033306330433001f00030006000c003000000 +2152:18003800380018001820186018c019803f0006000c001800300079e03b303b301b301b301b301b301b303de0 +2153:000018003800380018001820186018c019803f0007e00f301830303061e040300030033001e0000000000000 +2154:000038007c006c004c001820306060c07d807f0007e00f301830303061e040300030033001e0000000000000 +2155:000018003800380018001820186018c019803f0007f00ff01b00330063e040300030033001e0000000000000 +2156:000038007c006c004c001820306060c07d807f0007f00ff01b00330063e040300030033001e0000000000000 +2157:00003c006600060006003c20066006c067803f0007f00ff01b00330063e040300030033001e0000000000000 +2158:000004000c001c001c002c204c607ec00d800f0007f00ff01b00330063e040300030033001e0000000000000 +2159:000018003800380018001820186018c019803f0006600d801b00360067c046600660066003c0000000000000 +215a:0000fc00fc00c000c000f8200c600cc0cd807b0006600d801b00360067c046600660066003c0000000000000 +215b:000018003800380018001820186018c019803f0007c00e601e60366063c046600660066003c0000000000000 +215c:00003c006600060006003c20066006c067803d0007c00e601e60366063c046600660066003c0000000000000 +215d:00007e007e00600060007c20066006c067803f0007c00e601e60366063c046600660066003c0000000000000 +215e:00007e0006000c200c6018c01980330036006c001bc036606660466003c006600660066003c0000000000000 +215f:000018003800380018001820186018c019803f0006000c001800300060004000000000000000000000000000 +2160:0000000000001f000400040004000400040004000400040004000400040004001f0000000000000000000000 +2161:0000000000003fc00900090009000900090009000900090009000900090009003fc000000000000000000000 +2162:000000000000ffe0248024802480248024802480248024802480248024802480ffe000000000000000000000 +2163:000000000000fef0282028202820244024402440228022802280210021002100ffc000000000000000000000 +2164:000000000000f9f02040204020401080108010800900090009000600060006001f8000000000000000000000 +2165:000000000000e3f04140414041402240224022401440144014400840084008403ff000000000000000000000 +2166:000000000000e7f042a042a042a042a024a024a024a024a018a018a018a018a03df000000000000000000000 +2167:000000000000dff08aa08aa08aa08aa052a052a052a052a022a022a022a022a077f000000000000000000000 +2168:000000000000fef0244024402280228022802100210022802280228024402440fef000000000000000000000 +2169:0000000000007bc0110011000a000a000a00040004000a000a000a00110011007bc000000000000000000000 +216a:000000000000f7f0224022401440144014400840084014401440144022402240f7f000000000000000000000 +216b:000000000000eff0452045202920292029201120112029202920292045204520eff000000000000000000000 +216c:00000000000078003000300030003000300030003000300030003000302030207fe000000000000000000000 +216d:0000000000000fc01060202020006000600060006000600060002000302018400f8000000000000000000000 +216e:000000000000ff0061c060c06060606060606060606060606060606060406180fe0000000000000000000000 +216f:000000000000e07060e070e070e070e05960596059604d604e604e6044604460e4f000000000000000000000 +2170:00000000000004000400000000000c00040004000400040004000400040004000e0000000000000000000000 +2171:000000000000108010800000000031801080108010801080108010801080108039c000000000000000000000 +2172:0000000000004440444000000000ccc044404440444044404440444044404440eee000000000000000000000 +2173:0000000000004000400000000000dc7048204820444044404440428042804280e7c000000000000000000000 +2174:000000000000000000000000000070e0204020401080108009000900060006000f0000000000000000000000 +2175:0000000000000020002000000000e3e0412041202220222022201420142014203e7000000000000000000000 +2176:00000000000000a000a000000000c7e082a082a044a044a044a028a028a028a07df000000000000000000000 +2177:00000000000002a002a000000000dfe08aa08aa08aa052a052a052a022a022a077f000000000000000000000 +2178:00000000000020002000000000006ee0244022802280210021002280228024407ee000000000000000000000 +2179:000000000000000000000000000071c0208011000a00040004000a001100208071c000000000000000000000 +217a:000000000000004000400000000077c02240144014400840084014401440224077e000000000000000000000 +217b:00000000000000a000a000000000efe044a028a028a010a010a028a028a044a0eff000000000000000000000 +217c:000000001e0006000600060006000600060006000600060006000600060006001f8000000000000000000000 +217d:00000000000000000000000000001f8031c020c06000600060006000704030c01f8000000000000000000000 +217e:00000000006000e00060006000600f6031e020e0606060606060606070e039601e7000000000000000000000 +217f:0000000000000000000000000000ddc06ee06660666066606660666066606660ef7000000000000000000000 +2180:0000000000000f8036e04660c630c630c630c630c630c630c630c630662076c01f0000000000000000000000 +2181:000000000000ff0061c060c07860666063606360636063606660786060406180fe0000000000000000000000 +2182:0000000000000f8036e04660c630cf30d6b0d6b0d6b0d6b0cf30c630662076c01f0000000000000000000000 +2183:0000000000003f00608040400040006000600060006000600060004040c021801f0000000000000000000000 +2184:00000000000000000000000000001f8038c03040006000600060006020e030c01f8000000000000000000000 +2185:0000000000000fc01060202020006000600060006000600060002000302018600fe000600060006000600000 +2186:000000000000060006000600060006000600060006004620666036c01f800f00060000000000000000000000 +2187:000000000000ff0061c078c06460626072606a606a6072606260646078406180fe0000000000000000000000 +2188:0000000000000f8036e046609fb0a650af50a950a950af50a6509f90662076c01f0000000000000000000000 +2189:00003c006600660066006620666066c067803f0007e00f301830303061e040300030033001e0000000000000 +218a:000000007fe07fe040c00180030006000c001800300030003000302038601fc00f8000000000000000000000 +218b:000000000f801fc0206060206000600070003f003e0070006000602070403f801f0000000000000000000000 +2190:0000000000000000000000000c00180030007fe07fe0300018000c0000000000000000000000000000000000 +2191:0000000006000f001f8036c06660060006000600060006000600060006000600060000000000000000000000 +2192:0000000000000000000000000300018000c07fe07fe000c00180030000000000000000000000000000000000 +2193:000000000600060006000600060006000600060006000600666036c01f800f00060000000000000000000000 +2194:000000000000000000000000198030c06060fff0fff0606030c0198000000000000000000000000000000000 +2195:0000000006000f001f8036c0666006000600060006000600666036c01f800f00060000000000000000000000 +2196:0000000000000000000000007f007f0078006c0066006300618000c000600000000000000000000000000000 +2197:0000000000000000000000000fe00fe001e0036006600c601860300060000000000000000000000000000000 +2198:0000000000000000000000006000300018600c600660036001e00fe00fe00000000000000000000000000000 +2199:000000000000000000000000006000c06180630066006c0078007f007f000000000000000000000000000000 +219a:0000000000000000000000001800306060c0fff0fff061803300180000000000000000000000000000000000 +219b:00000000000000000000000001800cc01860fff0fff0306060c0018000000000000000000000000000000000 +219c:000000000000000000000000300060004880d550f550c5504220600030000000000000000000000000000000 +219d:00000000000000000000000000c000601120aab0aaf0aa304420006000c00000000000000000000000000000 +219e:000000000000000000000000198033006600fff0fff066003300198000000000000000000000000000000000 +219f:0000000006000f001f8036c0666006000f001f8036c066600600060006000600060000000000000000000000 +21a0:00000000000000000000000019800cc00660fff0fff006600cc0198000000000000000000000000000000000 +21a1:0000000006000600060006000600666036c01f800f000600666036c01f800f00060000000000000000000000 +21a2:000000000000000000000000180030306060ffc0ffc060603030180000000000000000000000000000000000 +21a3:0000000000000000000000000180c0c060603ff03ff06060c0c0018000000000000000000000000000000000 +21a4:000000000000000000000000180030306030fff0fff060303030180000000000000000000000000000000000 +21a5:0000000006000f001f8036c06660060006000600060006000600060006007fe07fe000000000000000000000 +21a6:0000000000000000000000000180c0c0c060fff0fff0c060c0c0018000000000000000000000000000000000 +21a7:000000007fe07fe006000600060006000600060006000600666036c01f800f00060000000000000000000000 +21a8:000006000f001f8036c066600600060006000600666036c01f800f000600fff0fff000000000000000000000 +21a9:00000000000003c003e00070183030306070ffe0ff8060003000180000000000000000000000000000000000 +21aa:0000000000003c007c00e000c180c0c0e0607ff01ff0006000c0018000000000000000000000000000000000 +21ab:000000000000000000e00110191031106130ffe0ff8061003100190000000000000000000000000000000000 +21ac:000000000000000070008800898088c0c8607ff01ff0086008c0098000000000000000000000000000000000 +21ad:000000000000000000000000198030c06c60f670e6f0636030c0198000000000000000000000000000000000 +21ae:000000000000000000000000108022404620fff0fff046202440108000000000000000000000000000000000 +21af:000000000000030006000c00180030007fe07fe000c00180230036003c003e003f0000000000000000000000 +21b0:0000000006000c0018003fc03fc018c00cc006c000c000c000c000c000c000c000c000000000000000000000 +21b1:000000000600030001803fc03fc0318033003600300030003000300030003000300000000000000000000000 +21b2:0000000000c000c000c000c000c000c000c006c00cc018c03fc03fc018000c00060000000000000000000000 +21b3:0000000030003000300030003000300030003600330031803fc03fc001800300060000000000000000000000 +21b4:00000000ff00ff000300030003000300030003000300030033301b600fc00780030000000000000000000000 +21b5:000000000000003000300030003000300030183030306030fff0fff060003000180000000000000000000000 +21b6:00000000000000000000038006c00c600c60183099307e303c00180000000000000000000000000000000000 +21b7:000000000000000000001c00360063006300c180c990c7e003c0018000000000000000000000000000000000 +21b8:0000000000007fe07fe000007f007f0078006c0066006300618000c000600000000000000000000000000000 +21b9:00008c009800b000ffe0ffe0b00098008c000310019000d07ff07ff000d00190031000000000000000000000 +21ba:0000000000001f801e00198018c0186000600060606060606060204030c019800f0000000000000000000000 +21bb:0000000000001f80078019803180618060006000606060606060204030c019800f0000000000000000000000 +21bc:000000000000000000000000000000000c00180030007fe0ffe0000000000000000000000000000000000000 +21bd:0000000000000000000000000000000000000000ffe07fe0300018000c000000000000000000000000000000 +21be:0000000008000c000e000f000d800cc00c000c000c000c000c000c000c000c000c0000000000000000000000 +21bf:000000000100030007000f001b00330003000300030003000300030003000300030000000000000000000000 +21c0:00000000000000000000000000000000060003000180ffc0ffe0000000000000000000000000000000000000 +21c1:0000000000000000000000000000000000000000ffe0ffc00180030006000000000000000000000000000000 +21c2:000000000c000c000c000c000c000c000c000c000c000cc00d800f000e000c00080000000000000000000000 +21c3:0000000003000300030003000300030003000300030033001b000f0007000300010000000000000000000000 +21c4:00000000018000c00060fff0fff0006000c0198030006000fff0fff060003000180000000000000000000000 +21c5:0000000030c078c0fcc0b4c030c030c030c030c030c030c030c032d033f031e030c000000000000000000000 +21c6:00000000180030006000fff0fff060003000198000c00060fff0fff0006000c0018000000000000000000000 +21c7:00000000180030006000fff0fff060003000180030006000fff0fff060003000180000000000000000000000 +21c8:0000000030c079e0fff0b6d030c030c030c030c030c030c030c030c030c030c030c000000000000000000000 +21c9:00000000018000c00060fff0fff0006000c0018000c00060fff0fff0006000c0018000000000000000000000 +21ca:0000000030c030c030c030c030c030c030c030c030c030c030c0b6d0fff079e030c000000000000000000000 +21cb:00000000000000000c00180030007fe0ffe000000000ffe0ffc0018003000600000000000000000000000000 +21cc:00000000000000000300018000c07fe07ff0000000007ff03ff018000c000600000000000000000000000000 +21cd:00000000000000000040304030406ff06ff0c080c1006ff06ff0320032000200000000000000000000000000 +21ce:00000000000000000100214021405fa05fa0821084105fa05fa0284028400800000000000000000000000000 +21cf:0000000000000000040004c004c0ff60ff6008301030ff60ff6020c020c02000000000000000000000000000 +21d0:00000000000000000000300030006ff06ff0c000c0006ff06ff0300030000000000000000000000000000000 +21d1:0000000006000f001f8039c079e0f9f019801980198019801980198019801980198000000000000000000000 +21d2:0000000000000000000000c000c0ff60ff6000300030ff60ff6000c000c00000000000000000000000000000 +21d3:00000000198019801980198019801980198019801980f9f079e039c01f800f00060000000000000000000000 +21d4:0000000000000000000030c030c06f606f60c030c0306f606f6030c030c00000000000000000000000000000 +21d5:000006000f001f8039c079e0f9f01980198019801980f9f079e039c01f800f00060000000000000000000000 +21d6:0000000000000000000000007f004c006600730059804cc006600330018000c0000000000000000000000000 +21d7:00000000000000000000000007f00190033006700cd01990330066000c001800000000000000000000000000 +21d8:00000000000000000000000018000c006600330019900cd006700330019007f0000000000000000000000000 +21d9:0000000000000000000000000180030006600cc09980b300e600cc009800fe00000000000000000000000000 +21da:000000000000180018003ff03ff070006000fff0fff0600070003ff03ff01800180000000000000000000000 +21db:00000000000001800180ffc0ffc000e00060fff0fff0006000e0ffc0ffc00180018000000000000000000000 +21dc:0000000000000000000000002000200061006380f6706c206000200020000000000000000000000000000000 +21dd:0000000000000000000000000040004008601c60e6f043600060004000400000000000000000000000000000 +21de:0000000006000f001f8036c06660060006007fe07fe0060006007fe07fe00600060000000000000000000000 +21df:00000000060006007fe07fe0060006007fe07fe006000600666036c01f800f00060000000000000000000000 +21e0:000000000000000000000000180030006000db60db6060003000180000000000000000000000000000000000 +21e1:000006000f001f8036c066600000000006000600060000000000060006000600000000000600060006000000 +21e2:0000000000000000000000000300018000c0db60db6000c00180030000000000000000000000000000000000 +21e3:0000060006000600000000000600060006000000000006000600060000000000666036c01f800f0006000000 +21e4:000000000000000000000000c600cc00d800fff0fff0d800cc00c60000000000000000000000000000000000 +21e5:0000000000000000000000000630033001b0fff0fff001b00330063000000000000000000000000000000000 +21e6:0000000000000000000006000a00120023f0401080108010401023f012000a00060000000000000000000000 +21e7:0000000006000900108020404020f0f0108010801080108010801080108010801f8000000000000000000000 +21e8:00000000000000000000060005000480fc408020801080108020fc4004800500060000000000000000000000 +21e9:000000001f8010801080108010801080108010801080f0f04020204010800900060000000000000000000000 +21ea:0000000006000900108020404020f0f01080108010801f8000001f80108010801f8000000000000000000000 +21eb:0000000006000900108020404020f0f0108010801080108010801080f0f08010fff000000000000000000000 +21ec:000000000600090010803fc04020f0f0108010801080108010801080f0f08010fff000000000000000000000 +21ed:0000000006000f00168026404620f6f0168016801680168016801680f6f08610fff000000000000000000000 +21ee:0000000006000900108026404920909020404020f0f0108010801080108010801f8000000000000000000000 +21ef:0000000006000900108026404920909020404020f0f0108010801080f0f08010fff000000000000000000000 +21f0:00000000000000000000e600a500a480bc408020801080108020bc40a480a500e60000000000000000000000 +21f1:000000000000000000000000fff08000be00b800ac00a600a300818080c08060803000000000000000000000 +21f2:000000000000000000000000c0106010301018100c500650035001d007d00010fff000000000000000000000 +21f3:0000000006000900108020404020f0f0108010801080f0f04020204010800900060000000000000000000000 +21f4:00000000000000000000000001801cc02260fff0fff022601cc0018000000000000000000000000000000000 +21f5:0000000030c031e033f032d030c030c030c030c030c030c030c0b4c0fcc078c030c000000000000000000000 +21f6:018000c00060fff0fff0006000c0018000c00060fff0fff0006000c0018000c00060fff0fff0006000c00180 +21f7:0000000000000000000000000000198031806180fff0fff06180318019800000000000000000000000000000 +21f8:0000000000000000000000000000198018c01860fff0fff0186018c019800000000000000000000000000000 +21f9:0000000000000000000000000000168026404620fff0fff04620264016800000000000000000000000000000 +21fa:00000000000000000000000000001a4032406240fff0fff0624032401a400000000000000000000000000000 +21fb:0000000000000000000000000000258024c02460fff0fff0246024c025800000000000000000000000000000 +21fc:0000000000000000000000002040204069606960fff0fff06960696020402040000000000000000000000000 +21fd:00000000000000000000000000001800280048008ff08ff04800280018000000000000000000000000000000 +21fe:0000000000000000000000000100018001400120ff10ff100120014001800100000000000000000000000000 +21ff:00000000000000000000000009001980294049208f108f104920294019800900000000000000000000000000 +2200:000000006060606060603fc03fc030c01980198019800f000f000f0006000600060000000000000000000000 +2201:000000001f803fc070e060606000600060006000600060006000606070e03fc01f8000000000000000000000 +2202:0000000000003c000f00038001c000c000c03fe070e060606060606070e03fc01f8000000000000000000000 +2203:0000000000007fe07fe000600060006000607fe07fe000600060006000607fe07fe000000000000000000000 +2204:0000010001007fe07fe002600260046004607fe07fe008600860106010607fe07fe020002000000000000000 +2205:00000000000000000000000000100fa011c020e06160626064606860704038805f0080000000000000000000 +2206:000000000000060006000f000f0019801980198030c030c030c0606060607fe07fe000000000000000000000 +2207:0000000000007fe07fe06060606030c030c030c01980198019800f000f000600060000000000000000000000 +2208:0000000000000000000007e01fe03800300060007fe07fe06000300038001fe007e000000000000000000000 +2209:0000000000000040004007e01fe03880308061007fe07fe0610032003a001fe007e004000400000000000000 +220a:0000000000000000000000000000000007c0180020007fc02000180007c00000000000000000000000000000 +220b:000000000000000000007e007f8001c000c000607fe07fe0006000c001c07f807e0000000000000000000000 +220c:00000000020002007e007f8005c004c008607fe07fe0086010c011c07f807e00200020000000000000000000 +220d:000000000000000000000000000000003e00018000403fe0004001803e000000000000000000000000000000 +220e:00000000000000000000000000007fe07fe07fe07fe07fe07fe07fe07fe07fe07fe000000000000000000000 +220f:00000000fff0fff0606060606060606060606060606060606060606060606060f0f0f0f00000000000000000 +2210:00000000e070e070606060606060606060606060606060606060606060606060fff0fff00000000000000000 +2211:000000007fe07fe03020180018000c000c00070007000c000c001800180030207fe07fe00000000000000000 2212:00000000000000000000000000000000000000003fc03fc00000000000000000000000000000000000000000 +2213:0000000000003fc03fc00000000006000600060006003fc03fc0060006000600060000000000000000000000 +2214:000000000000060006000000000006000600060006003fc03fc0060006000600060000000000000000000000 +2215:000000000000018001800300030003000600060006000c000c000c0018001800180030003000000000000000 +2216:00000000000000000000180018000c000c000600060003000300018001800000000000000000000000000000 +2217:00000000000006000600c630e67076e036c01f801f8036c076e0e670c6300600060000000000000000000000 +2218:0000000000000000000000000000000006000f00198019800f00060000000000000000000000000000000000 +2219:0000000000000000000000000000000006000f001f801f800f00060000000000000000000000000000000000 +221a:0000002000200060006000c000c001800180e3006300360036001c001c000800080000000000000000000000 +221b:0000f01008100830703008600860f0c000c0f18031801b001b000e000e000400040000000000000000000000 +221c:00001010301050309030fc60106010c000c0f18031801b001b000e000e000400040000000000000000000000 +221d:0000000000000000000000000000303048408480830083008480484030300000000000000000000000000000 +221e:000000000000000000000000000030c049208610861086108610492030c00000000000000000000000000000 +221f:00000000000000000000c000c000c000c000c000c000c000c000c000c000fff0fff000000000000000000000 +2220:0000000000000000000003000300060006000c000c00180018003000300060006000fff0fff0000000000000 +2221:00000000000003000300660036001c000e001b001980318030c060c060c0fff0fff000c000c0000000000000 +2222:000000000000000000000600030001e0078038c0c0c0c0c038c0078001e00300060000000000000000000000 +2223:0000000000000600060006000600060006000600060006000600060006000600060000000000000000000000 +2224:0000000000000600060006000600066007801e00660006000600060006000600060000000000000000000000 +2225:0000000000001980198019801980198019801980198019801980198019801980198000000000000000000000 +2226:0000000000001980198019801980198019f01f80f98019801980198019801980198000000000000000000000 +2227:0000000000000000000000000000060006000f000f001980198030c030c06060606000000000000000000000 +2228:00000000000000000000000000006060606030c030c0198019800f000f000600060000000000000000000000 +2229:000000000000000000001f803fc070e060606060606060606060606060606060606000000000000000000000 +222a:0000000000000000000060606060606060606060606060606060606070e03fc01f8000000000000000000000 +222b:000001e003e00700060006000600060006000600060006000600060006000600060006000e007c0078000000 +222c:000007700ef01980198019801980198019801980198019801980198019801980198019803980f700ee000000 +222d:000019903330777066606660666066606660666066606660666066606660666066606660eee0ccc099800000 +222e:000001e003e00700060006001f80264026404620462046204620264026401f80060006000e007c0078000000 +222f:000007700ef01980198019803fc059a059a0999099909990999059a059a03fc0198019803980f700ee000000 +2230:00001dd03bb03770264026403fc06660a650a650a650a650a650a65066603fc026402640eec0ddc0bb800000 +2231:000003c007c00e000c000c003f004c804c404c408df08ce08c400c000c000c000c000c001c00f800f0000000 +2232:000003c007c00e000c000c003f004c804c808c408df08ce08c404c804c803f000c000c001c00f800f0000000 +2233:000003c007c00e000c000c003f004c804c808c408ce08df08c404c804c803f000c000c001c00f800f0000000 +2234:000000000000000006000f000f000600000000000000000030c079e079e030c0000000000000000000000000 +2235:000000000000000030c079e079e030c0000000000000000006000f000f000600000000000000000000000000 +2236:000000000000000006000f000f000600000000000000000006000f000f000600000000000000000000000000 +2237:000000000000000030c079e079e030c0000000000000000030c079e079e030c0000000000000000000000000 +2238:000000000000000000000000000006000600000000003fc03fc0000000000000000000000000000000000000 +2239:000000000000000000c001e001e000c000007f007f00000000c001e001e000c0000000000000000000000000 +223a:000000000000000030c079e079e030c000007fe07fe0000030c079e079e030c0000000000000000000000000 +223b:000000000000000006000f000f00060000203e606780400006000f000f000600000000000000000000000000 +223c:000000000000000000000000000000001c203e6067c043800000000000000000000000000000000000000000 +223d:00000000000000000000000000000000438067c03e601c200000000000000000000000000000000000000000 +223e:00000000000000000000078007c000601c203e6067c0438060003e001e000000000000000000000000000000 +223f:00000000000000000000000018603c607c607e6067e063c063c0618000000000000000000000000000000000 +2240:000018001c000e0007000300030007000e001c001800180018001c000e000700030000000000000000000000 +2241:000000000000000000000080008001001d203e6067c04b800800100010000000000000000000000000000000 +2242:00000000000000000000000000007fe07fe0000000001c203e6067c043800000000000000000000000000000 +2243:00000000000000000000000000001c203e6067c04380000000007fe07fe00000000000000000000000000000 +2244:00000000000000000100010001001e203e6067c04780040004007fe07fe00800100010000000000000000000 +2245:00000000000000001c203e6067c04380000000007fe07fe0000000007fe07fe0000000000000000000000000 +2246:00000000000000001c203e6067c04380008001007fe07fe0020004007fe07fe0080010000000000000000000 +2247:00000000008000801d203e6067c04380020004007fe07fe0040008007fe07fe0100020000000000000000000 +2248:0000000000000000000000001c203e6067c04380000000001c203e6067c04380000000000000000000000000 +2249:0000000000000080008001001d203e6067c04380020002001c203e6067c04b80080010001000000000000000 +224a:0000000000001c203e6067c04380000000001c203e6067c04380000000007fe07fe000000000000000000000 +224b:0000000000001c203e6067c0438000001c203e6067c0438000001c203e6067c0438000000000000000000000 +224c:0000000000000000438067c03e601c20000000007fe07fe0000000007fe07fe0000000000000000000000000 +224d:0000000000000000000000008010e0707fe01f80000000001f807fe0e0708010000000000000000000000000 +224e:0000000000000000000000000f001980f0f0f0f0000000000f001980f0f0f0f0000000000000000000000000 +224f:0000000000000000000000000f001980f0f0f0f00000000000000000fff0fff0000000000000000000000000 +2250:000000000000000006000f000f000600000000007fe07fe0000000007fe07fe0000000000000000000000000 +2251:000006000f000f00060000007fe07fe0000000007fe07fe0000006000f000f00060000000000000000000000 +2252:0000300078007800300000007fe07fe0000000007fe07fe0000000c001e001e000c000000000000000000000 +2253:000000c001e001e000c000007fe07fe0000000007fe07fe00000300078007800300000000000000000000000 +2254:00000000000000000000000000004000e7e0e7e0400000004000e7e0e7e04000000000000000000000000000 +2255:00000000000000000000000000000040fce0fce0004000000040fce0fce00040000000000000000000000000 +2256:00000000000000000000000000007fe07fe006000900090006007fe07fe00000000000000000000000000000 +2257:00000000000000000600090009000600000000007fe07fe0000000007fe07fe0000000000000000000000000 +2258:00000000000000001f807fe0e0708010000000007fe07fe0000000007fe07fe0000000000000000000000000 +2259:00000000000006000f00198030c06060000000007fe07fe0000000007fe07fe0000000000000000000000000 +225a:000000000000606030c019800f000600000000007fe07fe0000000007fe07fe0000000000000000000000000 +225b:00000000000019800f003fc00f001980000000007fe07fe0000000007fe07fe0000000000000000000000000 +225c:0000000006000f00198030c060607fe0000000007fe07fe0000000007fe07fe0000000000000000000000000 +225d:0000103010401740f570954097409440f74000007fe07fe0000000007fe07fe0000000000000000000000000 +225e:000000003bc066606660666066606660000000007fe07fe0000000007fe07fe0000000000000000000000000 +225f:1f803fc070e001c003800700070000000700070000007fe07fe0000000007fe07fe000000000000000000000 +2260:000000000000000000000000004000c001807fc07fc006000c007fc07fc03000600040000000000000000000 +2261:00000000000000000000000000007fc07fc000007fc07fc000007fc07fc00000000000000000000000000000 +2262:00000000000000000000010002007fc07fc004007fc07fc008007fc07fc01000200000000000000000000000 +2263:0000000000000000000000007fc07fc000007fc07fc000007fc07fc000007fc07fc000000000000000000000 +2264:00000000000000000000000000e007801e00780078001e00078000e000007fe07fe000000000000000000000 +2265:0000000070001e00078001e001e007801e00700000007fe07fe0000000007fe07fe000000000000000000000 +2266:0000000000e007801e00780078001e00078000e000007fe07fe0000000007fe07fe000000000000000000000 +2267:0000000070001e00078001e001e007801e00700000007fe07fe0000000007fe07fe000000000000000000000 +2268:0000000000e007801e00780078001e00078001e003007fe07fe006000c007fe07fe018003000000000000000 +2269:0000000070001e00078001e001e007801e0070c001807fe07fe0030006007fe07fe00c001800000000000000 +226a:000000000000000007300e701ce039c07380e700e700738039c01ce00e700730000000000000000000000000 +226b:0000000000000000ce00e700738039c01ce00e700e701ce039c07380e700ce00000000000000000000000000 +226c:000033000c001e0033003300330073807380738073803300330033001e000c00330000000000000000000000 +226d:0000000000000000018001808310e3707fe01f80060006001f807fe0ec708c10180018000000000000000000 +226e:000000000000000000400040008000e007801f00790079001e00078002e00400040004000000000000000000 +226f:000000000000000002000200020074001e00078009e009e00f801e0070001000200020000000000000000000 +2270:0000000000400040008000e007801f00790079001e00078002e004007fe07fe0080008000800000000000000 +2271:0000000000000200020072001e00078009e009e00f801e00700010007fe07fe0200020000000000000000000 +2272:00000000000000e007801e00780078001e00078000e0000000001c203e6067c0438000000000000000000000 +2273:00000000000070001e00078001e001e007801e007000000000001c203e6067c0438000000000000000000000 +2274:00000080008000e007801f00790079001e00078004e0040008001c203e6077c0538010002000000000000000 +2275:00000040004070801e80078001e001e007801e007200040004001c203e6077c0538010002000000000000000 +2276:0000000000e007801e00780078001e00078070e01e00078001e001e007801e00700000000000000000000000 +2277:0000000070001e00078001e001e007801e0070e007801e00780078001e00078000e000000000000000000000 +2278:0200020002e007801e007a007a001e00078072e01e00078005e005e007801e00740004000400000000000000 +2279:0020002070401e40078001e001e007801e0076e007801e00780078001e00278020e040004000000000000000 +227a:000000000000000000000000006001c007803c00e0003c00078001c000600000000000000000000000000000 +227b:000000000000000000000000c00070003c00078000e007803c007000c0000000000000000000000000000000 +227c:00000000000000000000006001c007803c00e0003c000780e1c03c60078001c0006000000000000000000000 +227d:00000000000000000000c00070003c00078000e007803c0070e0c7803c007000c00000000000000000000000 +227e:000000000000006001c007803c00e0003c00078001c0006000001c203e6067c0438000000000000000000000 +227f:000000000000c00070003c00078000e007803c007000c00000001c203e6067c0438000000000000000000000 +2280:000000000000000003000300066007c007803c00ec003c001f8019c018603000300000000000000000000000 +2281:000000000000000001800180c30073003f00078006e007803c007c00cc001800180000000000000000000000 +2282:0000000000000000000007e01fe03800600060006000600038001fe007e00000000000000000000000000000 +2283:000000000000000000007e007f8001c0006000600060006001c07f807e000000000000000000000000000000 +2284:0000000000000180018007e01fe03980618061806180618039801fe007e00180018000000000000000000000 +2285:000000000000180018007e007f8019c0186018601860186019c07f807e001800180000000000000000000000 +2286:000000000000000007e01fe03800600060006000600038001fe007e000007fe07fe000000000000000000000 +2287:00000000000000007e007f8001c0006000600060006001c07f807e0000007fe07fe000000000000000000000 +2288:000000000040004007e01fe0390061006200620064003c001fe017e010007fe07fe020002000000000000000 +2289:00000000004000407f807f8001c0016002600260046005c07f807e0010007fe07fe020004000000000000000 +228a:00000000000007e01fe03800600060006000600038001fe007e000c001807fe07fe00c001800000000000000 +228b:0000000000007e007f8001c0006000600060006001c07f807e0000c001807fe07fe00c001800000000000000 +228c:0000000000000000000060606060626066606fe0666062606060606070e03fc01f8000000000000000000000 +228d:000000000000000000006060606066606f606f60666060606060606070e03fc01f8000000000000000000000 +228e:00000000000000000000c060c060c460c460df60c460c460c060c060e0e07fc03f8000000000000000000000 +228f:000000000000000000007fe07fe0600060006000600060006000600060007fe07fe000000000000000000000 +2290:000000000000000000007fe07fe0006000600060006000600060006000607fe07fe000000000000000000000 +2291:000000007fe07fe0600060006000600060006000600060007fe07fe000007fe07fe000000000000000000000 +2292:000000007fe07fe0006000600060006000600060006000607fe07fe000007fe07fe000000000000000000000 +2293:000000000000000000007fe07fe0606060606060606060606060606060606060606000000000000000000000 +2294:0000000000000000000060606060606060606060606060606060606060607fe07fe000000000000000000000 +2295:00000000000000000e0035804440444084208420ffe0842084204440444035800e0000000000000000000000 +2296:00000000000000000e0031804040404080208020ffe0802080204040404031800e0000000000000000000000 +2297:00000000000000000e003180404060c091208a2084208a20912060c0404031800e0000000000000000000000 +2298:00000000000000000e003180404040c0812082208420882090206040404031800e0000000000000000000000 +2299:00000000000000000e0031804040404080208e208e208e2080204040404031800e0000000000000000000000 +229a:00000000000000000e003180404040408e209120912091208e204040404031800e0000000000000000000000 +229b:00000000000000000e0031804040404095208e2084208e2095204040404031800e0000000000000000000000 +229c:00000000000000000e003180404040409f208020802080209f204040404031800e0000000000000000000000 +229d:00000000000000000e0031804040404080208020bfa0802080204040404031800e0000000000000000000000 +229e:0000000000000000ffe084208420842084208420ffe084208420842084208420ffe000000000000000000000 +229f:0000000000000000ffe080208020802080208020ffe080208020802080208020ffe000000000000000000000 +22a0:0000000000000000ffe08020c060a0a091208a2084208a209120a0a0c0608020ffe000000000000000000000 +22a1:0000000000000000ffe080208020802084208e208e2084208020802080208020ffe000000000000000000000 +22a2:00000000000000000000600060006000600060007fe07fe06000600060006000600000000000000000000000 +22a3:00000000000000000000006000600060006000607fe07fe00060006000600060006000000000000000000000 +22a4:0000000000000000000000000000060006000600060006000600060006007fe07fe000000000000000000000 +22a5:00000000000000000000000000007fe07fe00600060006000600060006000600060000000000000000000000 +22a6:00000000000000000000000030003000300030003fc03fc03000300030003000000000000000000000000000 +22a7:000000000000000000000000300030003fc03fc0300030003fc03fc030003000000000000000000000000000 +22a8:000000000000000000000000600060007fe07fe0600060007fe07fe060006000000000000000000000000000 +22a9:000000000000000000000000cc00cc00cc00cc00cff0cff0cc00cc00cc00cc00000000000000000000000000 +22aa:000000000000000000000000db00db00db00db00dbf0dbf0db00db00db00db00000000000000000000000000 +22ab:000000000000000000000000cc00cc00cff0cff0cc00cc00cff0cff0cc00cc00000000000000000000000000 +22ac:00000000000000000020602060406040608060807fe07fe06200620064006400680008000000000000000000 +22ad:000000000000000000200020604060407fe07fe0610061007fe07fe064006400080008000000000000000000 +22ae:000000000000000000200020cc20cc40cc40cc40cff0cff0cc80cc80cc80cd00010001000000000000000000 +22af:000000000000000000100020cc20cc20cff0cff0cc40cc80cff0cff0cd00cd00010002000000000000000000 +22b0:0000000000000000038001c0006001c007803c00e0003c00078001c000e001c0038000000000000000000000 +22b1:000000000000000038007000e00070003c00078000e007803c007000e0007000380000000000000000000000 +22b2:000000000000000000000000002000e003200c203020c02030200c20032000e0002000000000000000000000 +22b3:0000000000000000000000008000e0009800860081808060818086009800e000800000000000000000000000 +22b4:000000000000002000e003200c203020c02030200c20032000e000200000ffe0ffe000000000000000000000 +22b5:0000000000008000e0009800860081808060818086009800e00080000000ffe0ffe000000000000000000000 +22b6:0000000000000000000000000000204050e08ff08ff050e02040000000000000000000000000000000000000 +22b7:000000000000000000000000000020807140fe20fe2071402080000000000000000000000000000000000000 +22b8:000000000000000000000000000000800140fe20fe2001400080000000000000000000000000000000000000 +22b9:0000000000000000000000000000060006000600000070e070e0000006000600060000000000000000000000 +22ba:00000000000000000000000000000000000000007fe07fe00600060006000600060006000600000000000000 +22bb:00000000000000006060606030c030c0198019800f000f000600060000007fe07fe000000000000000000000 +22bc:00000000000000007fe07fe00000060006000f000f001980198030c030c06060606000000000000000000000 +22bd:00000000000000007fe07fe000006060606030c030c0198019800f000f000600060000000000000000000000 +22be:00000000000000000000c000c000f000cc00c200c100c100c080c080c080ffe0ffe000000000000000000000 +22bf:00000000000000000000006000e001e0036006600c60186030606060c060ffe0ffe000000000000000000000 +22c0:060006000f000f000f0019801980198030c030c030c0606060606060c030c030c03000000000000000000000 +22c1:c030c030c03060606060606030c030c030c01980198019800f000f000f000600060000000000000000000000 +22c2:0f003fc070e060606060c030c030c030c030c030c030c030c030c030c030c030c03000000000000000000000 +22c3:c030c030c030c030c030c030c030c030c030c030c030c0306060606070e03fc00f0000000000000000000000 +22c4:0000000000000000000000000600090010802040108009000600000000000000000000000000000000000000 +22c5:0000000000000000000000000000000006000f000f0006000000000000000000000000000000000000000000 +22c6:0000000000000000000000000000000019800f003fc00f001980000000000000000000000000000000000000 +22c7:000000000000000006000f00c630606030c01980fff0198030c06060c6300f00060000000000000000000000 +22c8:000000000000000000008010c030a050909089108610861089109090a050c030801000000000000000000000 +22c9:000000000000000000008010c020a040908089008600860089009080a040c020801000000000000000000000 +22ca:0000000000000000000080104030205010900910061006100910109020504030801000000000000000000000 +22cb:0000000000000000000080004000200010000800040006000900108020404020801000000000000000000000 +22cc:0000000000000000000000100020004000800100020006000900108020404020801000000000000000000000 +22cd:00000000000000000000000000000000438067c03e601c20000000007fe07fe0000000000000000000000000 +22ce:0000000000000000c06060c0318031801b001b001b001b000e000e000e000400040000000000000000000000 +22cf:0000000000000000040004000e000e000e001b001b001b001b003180318060c0c06000000000000000000000 +22d0:000000000000000007e01fe0380063e067e0640067e063e038001fe007e00000000000000000000000000000 +22d1:00000000000000007e007f8001c07c607e6002607e607c6001c07f807e000000000000000000000000000000 +22d2:000000000000000000003fc07fe0e070c030c630cf30c930c930c930c930c930c93000000000000000000000 +22d3:00000000000000000000c930c930c930c930c930c930cf30c630c030e0707fe03fc000000000000000000000 +22d4:000000000000060006003fc07fe0e670c630c630c630c630c630c630c630c630c63000000000000000000000 +22d5:000000000000000030c030c030c0fff0fff030c030c030c0fff0fff030c030c030c000000000000000000000 +22d6:000000000000000000000000000000e007801e00786078601e00078000e00000000000000000000000000000 +22d7:000000000000000000000000000070001e00078061e061e007801e0070000000000000000000000000000000 +22d8:0000000000000000049009201240248049009200920049002480124009200490000000000000000000000000 +22d9:0000000000000000920049002480124009200490049009201240248049009200000000000000000000000000 +22da:0000000000600180060018006000ffe00000ffe0ffe00000ffe000c003000c003000c0000000000000000000 +22db:00000000c00030000c00030000c0ffe00000ffe0ffe00000ffe0600018000600018000600000000000000000 +22dc:0000000000000000000000007fe07fe0000000e007801e00780078001e00078000e000000000000000000000 +22dd:0000000000000000000000007fe07fe0000070001e00078001e001e007801e00700000000000000000000000 +22de:00000000000000000000006001c007803c60e1c007803c00e0003c00078001c0006000000000000000000000 +22df:00000000000000000000c00070003c00c78070e03c00078000e007803c007000c00000000000000000000000 +22e0:00000000000004000400046009c00f803c00e8003c000f80e9c03c600f8009c0106010001000000000000000 +22e1:00000000000000800080c08071003d00078002e007803e0072e0c7803e007200c40004000400000000000000 +22e2:004000807fe07fe0610061006100620062006200640064007fe07fe008007fe07fe010001000000000000000 +22e3:004000807fe07fe0016001600160026002600260046004607fe07fe008007fe07fe010001000000000000000 +22e4:000000007fe07fe060006000600060006000600060007fe07fe0018003007fe07fe00c001800000000000000 +22e5:000000007fe07fe000600060006000600060006000607fe07fe0018003007fe07fe00c001800000000000000 +22e6:00000000000000e007801f00780078001e00078000e0040008001c203e6077c0538010002000000000000000 +22e7:00000000000070001e00078001e001e007801e007000040004001c203e6077c0538010002000000000000000 +22e8:000000000000006000c003801c00e0001c00038000c0046004001c203e6077c0538010002000000000000000 +22e9:000000000000c00060003800070000e0070038006000c40004001c203e6077c0538010002000000000000000 +22ea:000000000000000000800080012001e003200e203420c42038200c20132010e0202020004000000000000000 +22eb:0000000000000000008000808100e1009a0086008580846089808e009800f000a00020004000000000000000 +22ec:00000080008000a001e003200d203220c22032200c20072004e008200800ffe0ffe010001000000000000000 +22ed:0000010001008100e2009a0086008580846085808e009800e80090001000ffe0ffe020002000000000000000 +22ee:000006000f000f0006000000000006000f000f0006000000000006000f000f00060000000000000000000000 +22ef:000000000000000000000000000000000000eee0eee0eee00000000000000000000000000000000000000000 +22f0:0000006000f000f000600000000006000f000f000600000000006000f000f000600000000000000000000000 +22f1:00006000f000f00060000000000006000f000f00060000000000006000f000f0006000000000000000000000 +22f2:0000000000000000000003f00ff01c0018003000fff0fff0300018001c000ff003f000000000000000000000 +22f3:0000000000000000000007e01fe03800306060607fe07fe06060306038001fe007e000000000000000000000 +22f4:0000000000000000000000000000000007c0180020407fc02040180007c00000000000000000000000000000 +22f5:0000018003c00180000007e01fe03800300060007fe07fe06000300038001fe007e000000000000000000000 +22f6:000000007fe07fe0000007e01fe03800300060007fe07fe06000300038001fe007e000000000000000000000 +22f7:000000000000000000007fe00000000007c0180020407fc02040180007c00000000000000000000000000000 +22f8:0000000007e01fe03800300060007fe07fe06000300038001fe007e000007fe07fe000000000000000000000 +22f9:0000000000000000000007e01fe0380030007fe0600060007fe0300038001fe007e000000000000000000000 +22fa:00000000000000000000fc00ff000380018000c0fff0fff000c001800380ff00fc0000000000000000000000 +22fb:000000000000000000007e007f8001c060c060607fe07fe0606060c001c07f807e0000000000000000000000 +22fc:000000000000000000000000000000003e00018020403fe0204001803e000000000000000000000000000000 +22fd:000000007fe07fe000007e007f8001c000c000607fe07fe0006000c001c07f807e0000000000000000000000 +22fe:000000000000000000007fe0000000003e00018020403fe0204001803e000000000000000000000000000000 +22ff:fff0fff0c000c000c000c000c000c000c000c000fff0fff0c000c000c000c000c000c000c000c000fff0fff0 +2300:00000000000000000000000000100fa011c020e06160626064606860704038805f0080000000000000000000 +2301:000000000000000000000000000006000700078006c00660660036001e000e00060000000000000000000000 +2302:0f000f001980198030c030c060606060c030c030c030c030c030c030c030fff0000000000000000000000000 +2303:060006000f000f001980198030c030c060606060c030c0300000000000000000000000000000000000000000 +2304:0000000000000000000000000000000000000000c030c0306060606030c030c0198019800f000f0006000600 +2305:00000000000000000000fff0fff00000060006000f000f001980198030c030c060606060c030c03000000000 +2306:0000fff0fff000000000fff0fff00000060006000f000f001980198030c030c060606060c030c03000000000 +2307:030006000c000c000600030001800180030006000c000c000600030001800180030006000c000c0006000300 +2308:000000003fc03fc0300030003000300030003000300030003000300030003000300030003000000000000000 +2309:000000003fc03fc000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c0000000000000 +230a:000000003000300030003000300030003000300030003000300030003000300030003fc03fc0000000000000 +230b:0000000000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c03fc03fc0000000000000 +230c:000000000000000000000000000000000000000000000000000000000000000000f000000200020002000200 +230d:0000000000000000000000000000000000000000000000000000000000000000f00000000400040004000400 +230e:0200020002000200000000f00000000000000000000000000000000000000000000000000000000000000000 +230f:04000400040004000000f0000000000000000000000000000000000000000000000000000000000000000000 +2310:0000000000000000000000000000000000007fe07fe060006000600060000000000000000000000000000000 +2311:0000000000000000000000000000000030c01f8010801080108010801f8030c0000000000000000000000000 +2312:000000000000000000000000000000001f802040402040208010801000000000000000000000000000000000 +2313:000000000000000000000000000000001f802040402040208010fff000000000000000000000000000000000 +2314:000000000000000000000000000000001f802040606030c019800f0000000000000000000000000000000000 +2315:0000000000000000000003000cc01020201020102010201010202cc043008000000000000000000000000000 +2316:0000000000000400040004000e003580444084208020f1e080208420444035800e0004000400040000000000 +2317:000000000000000030c030c0fff0fff030c030c030c030c030c0fff0fff030c030c000000000000000000000 +2318:0000000000000000f0f090909f90fff030c030c030c030c030c0fff09f909090f0f000000000000000000000 +2319:000000000000000000000000000060006000600060007fe07fe0000000000000000000000000000000000000 +231a:00000003ff80030180030180030180030180037d800383800610c00c10601810301a1cb01800300c00600610c0038380037d8003018003018003018003018003ff80 +231b:00000007ffe0040020040020020040020040010080010080008100004200003c00004200008100010080021840021840047e20047e2009ff900ffff00ffff0000000 +231c:fe00fe00c000c000c000c000c000000000000000000000000000000000000000000000000000000000000000 +231d:03f003f000300030003000300030000000000000000000000000000000000000000000000000000000000000 +231e:000000000000000000000000000000000000000000000000000000000000c000c000c000c000c000fc00fc00 +231f:0000000000000000000000000000000000000000000000000000000000000030003000300030003003f003f0 +2320:000001e003e00300030006000600060006000600060006000600060006000600060006000600060006000600 +2321:060006000600060006000600060006000600060006000600060006000600060006000c000c007c0078000000 +2322:0000000000000000000000000000000000000000000000001f80606080100000000000000000000000000000 +2323:000000000000000000000000000000000000000000000000801060601f800000000000000000000000000000 +2324:00000000000000000000000000000000f6f0e6700f000f001980198030c030c060606060c030c03000000000 +2325:00000000000000000000000000000000f0f0f8f01c000e000700038001f000f0000000000000000000000000 +2326:00000000000000000000ff80ff8080408040a12092208c108c109220a12080408040ff80ff80000000000000 +2327:00000000000000000000fff0fff08010a050909089108610861089109090a0508010fff0fff0000000000000 +2328:000000000000000000007fe0fff08010a9508010a9508010bfd0bfd08010fff07fe000000000000000000000 +2329:00300000600000600000600000c00000c00000c00001800001800001800003000003000001800001800001800000c00000c00000c000006000006000006000003000 +232a:0c000006000006000006000003000003000003000001800001800001800000c00000c0000180000180000180000300000300000300000600000600000600000c0000 +232b:000000000000000000001ff01ff020102010485044908310831044904850201020101ff01ff0000000000000 +232c:0000000006000900108022404120909090509010901090109010905090904120224010800900060000000000 +232d:0000000000000000080008001000100026102f1059a059a08f40864000800080010001000000000000000000 +232e:000000000000000000000000000007000880104013f0144008809700a000c000f00000000000000000000000 +232f:000000000000000000001f801f80000000007fe07fe0000000001f801f800000000000000000000000000000 +2330:00000000000000000000104038e07df020402040204040804080408081008100ff0000000000000000000000 +2331:00000000000000001000100010003880544092209ff092205440388010001000100000000000000000000000 +2332:000000000000000000000000c000b0008c00830080c0fff080c083008c00b000c00000000000000000000000 +2333:000000000000000000000000c000b0008c00830080c0fff00000000000000000000000000000000000000000 +2334:0000000000000000000000000000000000008010801080108010801080108010fff000000000000000000000 +2335:0000000000000000000000000000000000000000000080104020204010800900060000000000000000000000 +2336:0000fff0060006000600060006000600060006000600060006000600060006000600060006000600fff00000 +2337:000000007fe07fe060606060606060606060606060606060606060606060606060607fe07fe0000000000000 +2338:00000000fff0fff0c030c030c030dfb0dfb0c030c030c030dfb0dfb0c030c030c030fff0fff0000000000000 +2339:00000000fff0fff0c030c030c630c630c030c030dfb0dfb0c030c030c630c630c030fff0fff0000000000000 +233a:00000000fff0fff0c030c030c030c630c930d0b0e070e070d0b0c930c630c030c030fff0fff0000000000000 +233b:00000000fff0fff0c030c030c030c030c630cf30d9b0d9b0cf30c630c030c030c030fff0fff0000000000000 +233c:00000000fff0fff0c030c030cf30dfb0f0f0e070c030c030e070f0f0dfb0cf30c030fff0fff0000000000000 +233d:0000000000000600060006000f003fc076e0e670c630c630e67076e03fc00f00060006000600000000000000 +233e:000000000000000000000f003fc070e06060e670c930c930e670606070e03fc00f0000000000000000000000 +233f:000000c000c000c00180018001800300030003007fe07fe00c000c000c001800180018003000300030000000 +2340:00003000300030001800180018000c000c000c007fe07fe003000300030001800180018000c000c000c00000 +2341:00000000fff0c0f0c1b0c1b0c1b0c330c330c330c630c630cc30cc30cc30d830d830d830f030fff000000000 +2342:00000000fff0f030d830d830d830cc30cc30cc30c630c630c330c330c330c1b0c1b0c1b0c0f0fff000000000 +2343:00000000fff0c030c030c030c070c1b0c630d830e030e030d830c630c1b0c070c030c030c030fff000000000 +2344:00000000fff0c030c030c030e030d830c630c1b0c070c070c1b0c630d830e030c030c030c030fff000000000 +2345:000000000000030003000300130033007300fff0fff073003300130003000300030000000000000000000000 +2346:0000000000000c000c000c000c800cc00ce0fff0fff00ce00cc00c800c000c000c0000000000000000000000 +2347:00000000fff0c030c030c030c030c430cc30dc30fff0fff0dc30cc30c430c030c030c030c030fff000000000 +2348:00000000fff0c030c030c030c030c230c330c3b0fff0fff0c3b0c330c230c030c030c030c030fff000000000 +2349:0000180018000c000c000c000f003fc07ce0ec70c630c630e37073e03fc00f8001800180018000c000c00000 +234a:00000000000000000600060006000600060006000600060006000600fff0fff000000000fff0000000000000 +234b:00000000060006000600060006000f000f001680168026402640462046208610fff006000600060000000000 +234c:00000000fff0c030c030e070e070e070d0b0d0b0d0b0c930c930c930c630c630c030c030c030fff000000000 +234d:00000000fff0c030c030c030c630c630c930c930d0b0d0b0e070e070c030fff0c030c030c030fff000000000 +234e:00000000060006001f803fc0666066606660666066603fc01f80060006007fe07fe000000000000000000000 +234f:00000000000006000f001f803fc0060006000600fff0fff00600060006000600060000000000000000000000 +2350:00000000fff0c630cf30dfb0fff0c630c630c630c630c630c630c630c630c630c630c630c630fff000000000 +2351:00000000fff00000fff0fff00600060006000600060006000600060006000600060000000000000000000000 +2352:00000000060006000600fff086104620462026402640168016800f000f000600060006000600060000000000 +2353:00000000fff0c030c030c030c630c630c930c930c930d0b0d0b0d0b0e070e070e070c030c030fff000000000 +2354:00000000fff0c030c030c030fff0c030e070e070d0b0d0b0c930c930c630c630c030c030c030fff000000000 +2355:000000007fe07fe0060006001f803fc0666066606660666066603fc01f800600060000000000000000000000 +2356:00000000000006000600060006000600fff0fff00600060006003fc01f800f00060000000000000000000000 +2357:00000000fff0c630c630c630c630c630c630c630c630c630c630c630c630fff0dfb0cf30c630fff000000000 +2358:000000000600060006000600000000000000000000000000000000000000000000000000fff0000000000000 +2359:000000000000000000000600060009000900108010802040204040204020fff0fff00000fff0000000000000 +235a:000000000000000000000600090010802040402080108010402020401080090006000000fff0000000000000 +235b:0000000000000000000000000000000006000f00198019800f0006000000000000000000fff0000000000000 +235c:00000000000000000f003fc070e06060e070c030c030e070606070e03fc00f0000000000fff0000000000000 +235d:000000000000000000000f0030c06060c630cf30d9b0d9b0cf30c630c030c030c03000000000000000000000 +235e:00000000fff0fff0c030c630c630c630c630c030c030c030c030c030c030c030c030fff0fff0000000000000 +235f:00000000000000000f003fc060606060c930c630c630c930606060603fc00f00000000000000000000000000 +2360:00000000fff0fff0c030c630cf30cf30c630c030c030c030c630cf30cf30c630c030fff0fff0000000000000 +2361:30c079e030c00000fff0fff00600060006000600060006000600060006000600060000000000000000000000 +2362:000030c079e030c000000600060009000900108010802040204040204020fff0fff000000000000000000000 +2363:0000000030c079e030c0000000000600c630666036c01f801f8036c06660c630060000000000000000000000 +2364:0000000030c079e030c000000000000006000f00198019800f00060000000000000000000000000000000000 +2365:000030c079e030c000000f003fc070e06060e070c030c030e070606070e03fc00f0000000000000000000000 +2366:00000000060006000600c630c630c630c630c630c630c630c630c630666036c00f0006000600060000000000 +2367:000000000300030003001ff03ff073006300c300c300c300c300630073003ff01ff003000300030000000000 +2368:00000000000030c079e030c0000000001c107e70e3e081c00000000000000000000000000000000000000000 +2369:00000000000030c079e030c00000600018000600018000600060018006001800600000000000000000000000 +236a:000000000000000000000000000000003f803f800000000000000e000e000e001c0038000000000000000000 +236b:00000000000000000000fff08010402040203c507e70f3e090c0090009000600060000000000000000000000 +236c:0000000000000f0010802040402040205c307e70e7e0c3a040204020204010800f0000000000000000000000 +236d:000000000000060006000600060006001e307e70e7e0c7800600060006000600060006000600000000000000 +236e:0000000000000000000000000e000e000e000000000000000e000e000e001c0038000000fff0000000000000 +236f:00000000fff0fff0c030c130c130dfb0dfb0c230c230c430c430dfb0dfb0c830c830c030fff0fff000000000 +2370:00000000fff0fff0c030cf30cf30d9b0c1b0c1b0c330c630c630c630c030c630c630c030fff0fff000000000 +2371:0000000000000000000080108010402040203c507e70f3e090c0090009000600060000000000000000000000 +2372:00000000000000000000060006000900090030907cf0e7e0a3c0402040208010801000000000000000000000 +2373:000000000000000000000000000000007e007e000600060006000600060006000600038000e0000000000000 +2374:000000000000000000000000000000001f803fc070e060606060606070e07fc0670060006000600000000000 +2375:00000000000000000000000000006060c030c630c630c630c630c63066207fc0198000000000000000000000 +2376:00000000000000000000000000001f9031d060e060e060c060c060c061e072603c300000fff0000000000000 +2377:00000000000000000000000000000f801fc0206060003f003f00600060203fc01f000000fff0000000000000 +2378:0000000000000000000000007e007e000600060006000600060006000600038000e00000fff0000000000000 +2379:00000000000000000000000000006060c030c630c630c630c630c63066207fc019800000fff0000000000000 +237a:00000000000000000000000000001f9031d060e060e060c060c060c061e072603c3000000000000000000000 +237b:000000c0018001801ff01ff0030003006600660066003c003c003c0018001800180000000000000000000000 +237c:0000000000000cc00f000c003c00cc00cc003c000c000f000cc00cc08f008ff0bff0c000f800000000000000 +237d:000000000000000000000000000000000000f0f0f0f030c030c030c030c03fc03fc000000000000000000000 +237e:000000000f001f8030c060606060c030c030fff0fff030c030c030c030c0f0f0f0f000000000000000000000 +237f:00000000060006000600060006000f001f801f800f0006000600060006000600060000000000000000000000 +2380:0000000000000f001080008000800f801080108010808f904020204010800900060000000000000000000000 +2381:0000000000000000000000000000000078008400040004007c008400840084007d500000fff0000000000000 +2382:0000000000000000000000000000000071c08a200820082079e08a208a208a2079e0000079e0000000000000 +2383:0000000000000000000000008010c0304f2010800080c0b0cfb01080108010804fa0c0308010000000000000 +2384:0000000000000000000000000000ffc089209110911091109110911091108920ffc000000000000000000000 +2385:00000000000006000600f6f08610861086108610861086108610861086108610f6f006000600000000000000 +2386:000000000000000006000f00198030c004600630ff10ff100630046030c019800f0006000000000000000000 +2387:000000000000000000000040006003f003f0066006400c000c0018001800f1f0f1f000000000000000000000 +2388:00000000842084204e4055402480554055404e404e404e4055405540248055404e4084208420000000000000 +2389:000000000000000000000f003fc0606040208010f0f099908f10462060603fc00f0000000000000000000000 +238a:000000000000000000000f003fc060604020fff0b0d099908f10462060603fc00f0000000000000000000000 +238b:00000000000000000000f300c3c0a0e0906008700430c230e070606070e03fc00f0000000000000000000000 +238c:000000000f801fc038e03870fe707c70387010000000000070e089108910891070e000000000000000000000 +238d:0000000000003fc03fc030c030c030c030c030c030c030c030c030c030c0f0f0f0f000000000000000000000 +238e:0000000000000ff01fe030e030c030c030c030c030c030c030c030c070c07f80ff0000000000000000000000 +238f:0000000000000000fff006000900108020404020801080104020204010800900060000000000000000000000 +2390:0000000000000000060009001080204040208010801040202040108009000600fff000000000000000000000 +2391:000000000000fff0060009001080204040208010fff080104020204010800900060000000000000000000000 +2392:000000000000060009001080204040208010fff0801040202040108009000600fff000000000000000000000 +2393:00000000000000000000000000000000ffe0ffe000000000eee0eee000000000000000000000000000000000 +2394:0000000000001f801080204020404020402080108010402040202040204010801f8000000000000000000000 +2395:00000000fff0fff0c030c030c030c030c030c030c030c030c030c030c030c030c030c030fff0fff000000000 +2396:00000000000000003fc03f803f803f003f003e003e003c003c00380038003000300000000000000000000000 +2397:0000d540804000409ff00010801004108c101fd0bfd01fd08c10041080101010f01010101ff0000000000000 +2398:0000ffc08040804095508000801082008310bf80bfd0bf808310820080108000f01010001550000000000000 +2399:0000000003c006400a4012403e402040e070a050a050a050bfd0801080108010fff000000000000000000000 +239a:00000000000000000000000000007fe0801088909110a21084508890911080107fe000000000000000000000 +239b:0000000001800300060006000c000c000c001800180018001800300030003000300030003000300030003000 +239c:3000300030003000300030003000300030003000300030003000300030003000300030003000300030003000 +239d:30003000300030003000300030003000300018001800180018000c000c000c00060006000300018000000000 +239e:0000000018000c0006000600030003000300018001800180018000c000c000c000c000c000c000c000c000c0 +239f:00c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c0 +23a0:00c000c000c000c000c000c000c000c000c00180018001800180030003000300060006000c00180000000000 +23a1:000000003f803f80300030003000300030003000300030003000300030003000300030003000300030003000 +23a2:3000300030003000300030003000300030003000300030003000300030003000300030003000300030003000 +23a3:3000300030003000300030003000300030003000300030003000300030003000300030003f803f8000000000 +23a4:000000001fc01fc000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c0 +23a5:00c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c0 +23a6:00c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c01fc01fc000000000 +23a7:0000000000c00180030003000600060006000600060006000600060006000600060006000600060006000600 +23a8:06000600060006000600060006000c000c0018003000300018000c000c000600060006000600060006000600 +23a9:060006000600060006000600060006000600060006000600060006000600060003000300018000c000000000 +23aa:0600060006000600060006000600060006000600060006000600060006000600060006000600060006000600 +23ab:00000000300018000c000c000600060006000600060006000600060006000600060006000600060006000600 +23ac:060006000600060006000600060003000300018000c000c00180030003000600060006000600060006000600 +23ad:06000600060006000600060006000600060006000600060006000600060006000c000c001800300000000000 +23ae:0600060006000600060006000600060006000600060006000600060006000600060006000600060006000600 +23af:0000000000000000000000000000000000000000fff0fff00000000000000000000000000000000000000000 +23b0:00c0018003000300060006000600060006000600060006000600060006000600060006000c000c0018003000 +23b1:300018000c000c000600060006000600060006000600060006000600060006000600060003000300018000c0 +23b2:00000000000000007fe07fe030003000180018000c000c0006000600030003000180018000c000c000600060 +23b3:0060006000c000c00180018003000300060006000c000c0018001800300030007fe07fe00000000000000000 +23b4:fff0fff0c030c030c030c0300000000000000000000000000000000000000000000000000000000000000000 +23b5:0000000000000000000000000000000000000000000000000000000000000000c030c030c030c030fff0fff0 +23b6:00000000c030c030c030c030fff0fff0000000000000fff0fff0c030c030c030c03000000000000000000000 +23b7:06000600060006000600c600c60066006600360036001e001e000e000e000600060000000000000000000000 +23b8:c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000 +23b9:0030003000300030003000300030003000300030003000300030003000300030003000300030003000300030 23ba:fff0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000 23bb:000000000000000000000000fff0fff000000000000000000000000000000000000000000000000000000000 23bc:00000000000000000000000000000000000000000000000000000000fff0fff0000000000000000000000000 23bd:00000000000000000000000000000000000000000000000000000000000000000000000000000000fff0fff0 +23be:00000000000007e0040004000400040004000400040004000400040004000400040000000000000000000000 +23bf:000000000000040004000400040004000400040004000400040004000400040007e000000000000000000000 +23c0:000000000400040004001f0024804440444084208420842084204440444024801f0004000400040000000000 +23c1:0000ffe00400040004001f0024804440444084208420842084204440444024801f0004000400040000000000 +23c2:00000400040004001f0024804440444084208420842084204440444024801f00040004000400ffe000000000 +23c3:000004000400040004000e000e0015001500248024804440444084208420ffe0040004000400040000000000 +23c4:0000ffe00400040004000e000e0015001500248024804440444084208420ffe0040004000400040000000000 +23c5:000004000400040004000e000e0015001500248024804440444084208420ffe0040004000400ffe000000000 +23c6:0000000004000400040004000400040004203c40478084000400040004000400040004000400040000000000 +23c7:0000ffe004000400040004000400040004203c40478084000400040004000400040004000400040000000000 +23c8:00000400040004000400040004000400040004203c4047808400040004000400040004000400ffe000000000 +23c9:0000ffe004000400040004000400040004000400040004000400040004000400040004000400040000000000 +23ca:0000040004000400040004000400040004000400040004000400040004000400040004000400ffe000000000 +23cb:000000000000fc00040004000400040004000400040004000400040004000400040000000000000000000000 +23cc:0000000000000400040004000400040004000400040004000400040004000400fc0000000000000000000000 +23cd:00000000000007000600f6f08410801080108010801080108010801080108010fff000000000000000000000 +23ce:000000000000000000e000e000e000e008e018e038e07fe0ffe07fc038001800080000000000000000000000 +23cf:000000000000000006000f001f803fc07fe0fff0000000000000fff0fff0fff0fff000000000000000000000 +23d0:0600060006000600060006000600060006000600060006000600060006000600060006000600060006000600 +23d1:00000000000000000000000000000000c03060603fc00f000000000000000000000000000000000000000000 +23d2:0000000000000000000000000000fff0fff000000000c03060603fc00f000000000000000000000000000000 +23d3:0000000000000000000000000000c03060603fc00f0000000000fff0fff00000000000000000000000000000 +23d4:0000000000000000000000000000fff0fff0000000008610492030c030c00000000000000000000000000000 +23d5:00000000000000000000000000008610492030c030c000000000fff0fff00000000000000000000000000000 +23d6:0000000000000000000000000000000000008610492030c030c0000000000000000000000000000000000000 +23d7:0000000000000000003000300030003000300030fff0fff00000000000000000000000000000000000000000 +23d8:0000000000000000c030c030c030c030c030c030fff0fff00000000000000000000000000000000000000000 +23d9:0000000000000000c630c630c630c630c630c630fff0fff00000000000000000000000000000000000000000 +23da:0000000006000600060006000600060006000600fff0fff0000000003fc03fc0000000000f000f0000000000 +23db:00000000000000000000000000003fc020402040fff0204020403fc000000000000000000000000000000000 +23dc:00000000000000000000000000000000000000000000000000003fc07fe0e070c03000000000000000000000 +23dd:00000000000000000000c030e0707fe03fc00000000000000000000000000000000000000000000000000000 +23de:000000000000000000000000000000000000000006000f007fe0f9f0c030c030c03000000000000000000000 +23df:0000000000000000c030c030c030f9f07fe00f00060000000000000000000000000000000000000000000000 +23e0:0000000000000000000000000000000000000000000000001f803fc06060c030801000000000000000000000 +23e1:00000000000000008010c03060603fc01f800000000000000000000000000000000000000000000000000000 +23e2:00000000000000000000000000003f0021002080208040404040402080208010fff000000000000000000000 +23e3:000000000000000006000900108020404f209090a050a050a050a05090904f20204010800900060000000000 +23e4:0000000000000000000000000000000000000000fff000000000000000000000000000000000000000000000 +23e5:00000000000000000000000000000ff010101010202020204040404080808080ff0000000000000000000000 +23e6:00000000000000000000000018002400420042007ff002100210012000c00000000000000000000000000000 +23e7:0000000000002000200022002200fa007200223002c00f000f001f00318060c0c06080300000000000000000 +23e8:000000000000000000000000000000000000000000000000000021c0622062202220222022202220222071c0 +23e9:000000000000000000000000000000c00c00f00f00fc0fc0ff0ff0ffcffcffffffffffffffcffcff0ff0fc0fc0f00f00c00c00000000000000000000000000000000 +23ea:00000000000000000000000000000000300300f00f03f03f0ff0ff3ff3ffffffffffffff3ff3ff0ff0ff03f03f00f00f003003000000000000000000000000000000 +23eb:000000000000000000001800007e0001ff8007ffe01ffff87ffffeffffff001800007e0001ff8007ffe01ffff87ffffeffffff000000000000000000000000000000 +23ec:000000000000000000ffffff7ffffe1ffff807ffe001ff80007e00001800ffffff7ffffe1ffff807ffe001ff80007e00001800000000000000000000000000000000 +23ed:000000000000000000008430c630e730f7b0fff0fff0fff0fff0f7b0e730c630843000000000000000000000 +23ee:00000000000000000000c210c630ce70def0fff0fff0fff0fff0def0ce70c630c21000000000000000000000 +23ef:000000000000000000008330c330e330f330fb30ff30ff30fb30f330e330c330833000000000000000000000 +23f0:0000000f00f03f81fc387e1c31c38c0300c00618600618600c18300c18300c18300660600780600300c001c3800ffff01f00f8000000000000000000000000000000 +23f1:1f80060066601f803fc060606660c630c630c630c630c030606060603fc01f80000000000000000000000000 +23f2:0000000000001f803fc060607060d830cc30c630c330c030606060603fc01f80000000000000000000000000 +23f3:00000007ffe004002004002002004003ffc001ff8001ff8000ff00007e00003c00004200009900010080021840021840047e20047e2009ff900ffff00ffff0000000 +23f4:000000000000000000c001c003c007c00fc01fc03fc03fc01fc00fc007c003c001c000c00000000000000000 +23f5:0000000000000000300038003c003e003f003f803fc03fc03f803f003e003c00380030000000000000000000 +23f6:000000000000000000000000000006000f001f803fc07fe0fff0fff000000000000000000000000000000000 +23f7:0000000000000000000000000000fff0fff07fe03fc01f800f00060000000000000000000000000000000000 +23f8:0000000000000000000079e079e079e079e079e079e079e079e079e079e079e079e000000000000000000000 +23f9:00000000000000000000fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff000000000000000000000 +23fa:000000000000000000000f003fc07fe07fe0fff0fff0fff0fff07fe07fe03fc00f0000000000000000000000 +23fb:00000000000006000600060036c066606660c630c630c030c030606060603fc00f0000000000000000000000 +23fc:000000000000000000000f003fc060606660c630c630c630c630666060603fc00f0000000000000000000000 +23fd:0000000000000000000006000600060006000600060006000600060006000600060000000000000000000000 +23fe:0000000000000000000006001c0038003000700070007000700038003e001fe0078000000000000000000000 +23ff:000000000000000000000000001000f007e03f40f8a0c0a038a0074000e00000000000000000000000000000 +2400:00004200620052004a00460042000000108010801080108010800f0000000400040004000400040007e00000 +2401:00003c00420030000c0042003c0000000f0010801080108010800f0000000420042007e00420042004200000 +2402:00003c00420030000c0042003c0000001f000400040004000400040000000420024001800180024004200000 +2403:00007e0040007e00400040007e0000001f000400040004000400040000000420024001800180024004200000 +2404:00007e0040007e00400040007e0000000f0010801080108010800f00000007c0010001000100010001000000 +2405:00007e0040007e00400040007e000000108018801480128011801080000003c00420042004a0044003a00000 +2406:00003c00420042007e004200420000000f8010001000100010000f8000000460058006000600058004600000 +2407:00007c0042007e00420042007c0000001f8010001f80100010001f8000000400040004000400040007e00000 +2408:00000000000000007c0042007e00420042007c00000003c00420030000c0042003c000000000000000000000 +2409:0000000000000000420042007e00420042004200000007c00100010001000100010000000000000000000000 +240a:0000000000000000400040004000400040007e00000007e0040007e004000400040000000000000000000000 +240b:0000000000000000420042002400240018001800000007c00100010001000100010000000000000000000000 +240c:00000000000000007e0040007e00400040004000000007e0040007e004000400040000000000000000000000 +240d:00000000000000003e0040004000400040003e00000007c0042007c004800440042000000000000000000000 +240e:00000000000000003c00420030000c0042003c00000003c0042004200420042003c000000000000000000000 +240f:00000000000000003c00420030000c0042003c00000003e0008000800080008003e000000000000000000000 +2410:00007c0042004200420042007c000000100010001000100010001f80000007e0040007e00400040007e00000 +2411:00007c0042004200420042007c0000000f8010001000100010000f8000000080038000800080008003e00000 +2412:00007c0042004200420042007c0000000f8010001000100010000f80000003c0042000400180020007e00000 +2413:00007c0042004200420042007c0000000f8010001000100010000f80000003c0042001e00020042003c00000 +2414:00007c0042004200420042007c0000000f8010001000100010000f80000004000480048007e0008000800000 +2415:00004200620052004a004600420000000f00108010801f801080108000000460058006000600058004600000 +2416:00003c00420030000c0042003c000000104008800500020002000200000004200620052004a0046004200000 +2417:00007e0040007e00400040007e0000001f0004000400040004000400000007c0042007e00420042007c00000 +2418:00003e0040004000400040003e0000000f00108010801f8010801080000004200620052004a0046004200000 +2419:00000000000000007e0040007e00400040007e0000000420066005a004200420042000000000000000000000 +241a:00003c00420030000c0042003c000000108010801080108010800f00000007c0042007e00420042007c00000 +241b:00007e0040007e00400040007e0000000f0010800c00030010800f00000003e0040004000400040003e00000 +241c:00000000000000007e0040007e00400040004000000003c00420030000c0042003c000000000000000000000 +241d:00000000000000003c00420040004e0042003c00000003c00420030000c0042003c000000000000000000000 +241e:00000000000000007c0042007c00480044004200000003c00420030000c0042003c000000000000000000000 +241f:0000000000000000420042004200420042003c00000003c00420030000c0042003c000000000000000000000 +2420:00000000000000003c00420030000c0042003c00000007c0042007c004000400040000000000000000000000 +2421:00007c0042004200420042007c0000001f8010001f80100010001f8000000400040004000400040007e00000 +2422:00000000600060006c007000e00067806fc070e06060606060606060706078c06f8000000000000000000000 +2423:0000000000000000000000000000000000000000000000006060606060607fe07fe000000000000000000000 +2424:000000000000630073007b006f006700630000000000030003000300030003e003e000000000000000000000 +2425:0000000000000000000000900120024004900920124024804900920024004800900000000000000000000000 +2426:000000000f001f8039c030403000300018000c00060003000300000000000300030000000000000000000000 +2427:0000000000000000000033303330ccc0ccc033303330ccc0ccc033303330ccc0ccc000000000000000000000 +2428:000033303330ccc0ccc033303330ccc0ccc033303330ccc0ccc033303330ccc0ccc000000000000000000000 +2429:00001c701c70e380e3801c701c70e380e3801c701c70e380e3801c701c70e380e38000000000000000000000 +2440:000000000000000000000000000007e007e00660066006606600660066007e007e0000000000000000000000 +2441:000000000000000000000000000000600060006000607fe07fe0606060606060606000000000000000000000 +2442:000000000000000000000000000060606060606060607fe07fe0060006000600060000000000000000000000 +2443:000000000000000000000000000006000600060006007fe07fe0606060606060606000000000000000000000 +2444:00000000000000000000000000007fe07fe06660666006000600666066607fe07fe000000000000000000000 +2445:0000000000000000000000008010e070999086109990e0708010000000000000000000000000000000000000 +2446:000000000000000001e001e071e071e0700070007000700071e071e001e001e0000000000000000000000000 +2447:000000000000000000000000000000e000e006e006e006000600760076007000700000000000000000000000 +2448:00000000000000000000000001e001e001e001e001e06de06de06c006c006c006c0000000000000000000000 +2449:0000000000000000000000000000000000000000000077607760776077607760776000000000000000000000 +244a:00000000000000006600660066003300330033001980198019800cc00cc00cc0066006600660000000000000 +2460:00000f0030c0402046208e109e108610861086108610861086104620402030c00f0000000000000000000000 +2461:00000f0030c040204f20919081908190831086108c10981098105fa0402030c00f0000000000000000000000 +2462:00000f0030c040204f20989080d080d08f1080d080d080d098904f20402030c00f0000000000000000000000 +2463:00000f0030c0402041a0831086108c109990b190bfd08190819041a0402030c00f0000000000000000000000 +2464:00000f0030c040205fa09810981098109f9081908190819099904f20402030c00f0000000000000000000000 +2465:00000f0030c040204f20b0d0b0d0b0108f10b0d0b0d0b0d0b0d04f20402030c00f0000000000000000000000 +2466:00000f0030c040205fa0819083108310861086108c108c1098105820402030c00f0000000000000000000000 +2467:00000f0030c040204f20b0d0b0d0b0d08f10b0d0b0d0b0d0b0d04f20402030c00f0000000000000000000000 +2468:00000f0030c040204f20b0d0b0d0b0d0b0d08fd080d080d0b0d04f20402030c00f0000000000000000000000 +2469:00000f0030c040204020b390b6d0b6d0b6d0b6d0b6d0b6d0b3904020402030c00f0000000000000000000000 +246a:00000f0030c0402040209990bb909990999099909990999099904020402030c00f0000000000000000000000 +246b:00000f0030c040204020b390b6d0b0d0b190b310b610b610b7d04020402030c00f0000000000000000000000 +246c:00000f0030c040204020b390b6d0b0d0b190b190b0d0b6d0b3904020402030c00f0000000000000000000000 +246d:00000f0030c040204020b190b310b610b6d0b6d0b7d0b0d0b0d04020402030c00f0000000000000000000000 +246e:00000f0030c040204020b7d0b610b610b790b0d0b0d0b6d0b3904020402030c00f0000000000000000000000 +246f:00000f0030c040204020b190b310b610b790b6d0b6d0b6d0b3904020402030c00f0000000000000000000000 +2470:00000f0030c040204020b7d0b0d0b0d0b190b190b310b310b3104020402030c00f0000000000000000000000 +2471:00000f0030c040204020b390b6d0b6d0b390b6d0b6d0b6d0b3904020402030c00f0000000000000000000000 +2472:00000f0030c040204020b390b6d0b6d0b6d0b3d0b0d0b190b3104020402030c00f0000000000000000000000 +2473:00000f0030c0402040209890a55085508950895091509150bc904020402030c00f0000000000000000000000 +2474:000000000000402046208e109e10861086108610861086108610462040200000000000000000000000000000 +2475:00000000000040204f20919081908190831086108c10981098105fa040200000000000000000000000000000 +2476:00000000000040204f20989080d080d08f1080d080d080d098904f2040200000000000000000000000000000 +2477:000000000000402041a0831086108c109990b190bfd08190819041a040200000000000000000000000000000 +2478:00000000000040205fa09810981098109f9081908190819099904f2040200000000000000000000000000000 +2479:00000000000040204f20b0d0b0d0b0108f10b0d0b0d0b0d0b0d04f2040200000000000000000000000000000 +247a:00000000000040205fa0819083108310861086108c108c109810582040200000000000000000000000000000 +247b:00000000000040204f20b0d0b0d0b0d08f10b0d0b0d0b0d0b0d04f2040200000000000000000000000000000 +247c:00000000000040204f20b0d0b0d0b0d0b0d08fd080d080d0b0d04f2040200000000000000000000000000000 +247d:00000000000040204020b390b6d0b6d0b6d0b6d0b6d0b6d0b390402040200000000000000000000000000000 +247e:000000000000402040209990bb90999099909990999099909990402040200000000000000000000000000000 +247f:00000000000040204020b390b6d0b0d0b190b310b610b610b7d0402040200000000000000000000000000000 +2480:00000000000040204020b390b6d0b0d0b190b190b0d0b6d0b390402040200000000000000000000000000000 +2481:00000000000040204020b190b310b610b6d0b6d0b7d0b0d0b0d0402040200000000000000000000000000000 +2482:00000000000040204020b7d0b610b610b790b0d0b0d0b6d0b390402040200000000000000000000000000000 +2483:00000000000040204020b190b310b610b790b6d0b6d0b6d0b390402040200000000000000000000000000000 +2484:00000000000040204020b7d0b0d0b0d0b190b190b310b310b310402040200000000000000000000000000000 +2485:00000000000040204020b390b6d0b6d0b390b6d0b6d0b6d0b390402040200000000000000000000000000000 +2486:00000000000040204020b390b6d0b6d0b6d0b3d0b0d0b190b310402040200000000000000000000000000000 +2487:000000000000402040209890a55085508950895091509150bc90402040200000000000000000000000000000 +2488:0000000004000c001c003c006c000c000c000c000c000c000c000c000c000c307fb000000000000000000000 +2489:000000003e007f00c3808180018001800180030006000c00180030006080ffb0ffb000000000000000000000 +248a:000000000f801fc020e04060006000e007c00fc000e000600060406060403fb01f3000000000000000000000 +248b:0000000001800380038005800580098009801180118021803fe07fe0018001b001b000000000000000000000 +248c:000000001f801f802000200040007f00638001c000c000c000c080c0c0c061b03f3000000000000000000000 +248d:0000000007000c00180030003000600067806fc070e060606060606070403fb01f3000000000000000000000 +248e:000000001fe03fe06040004000c0008000800180010001000300020002000660046000000000000000000000 +248f:000000000f00118030c030c030c018800d0006000b00118030c030c030c018b00f3000000000000000000000 +2490:000000000f8011c020e060606060606070e03f601e60006000c000c0018007303c3000000000000000000000 +2491:0000000043004480c840c84048404840484048404840484048404840484044b0e33000000000000000000000 +2492:00000000210021006300e700210021002100210021002100210021002100213073b000000000000000000000 +2493:0000000047004880d040d04040404080408041004100420042004400440048b0efb000000000000000000000 +2494:0000000043004480c840c84040404040408047004080404040404840484044b0e33000000000000000000000 +2495:0000000041004100c200c200440044004800490051005fe04100410041004130e13000000000000000000000 +2496:000000004fc04840c800c800480048004f0040804040404040404840484044b0e33000000000000000000000 +2497:0000000043004480c840c840480048004f0048804840484048404840484044b0e33000000000000000000000 +2498:000000004fe04020c020c0404040408040804100410042004200440044004860e86000000000000000000000 +2499:0000000043004480c840c84048404840448043004480484048404840484044b0e33000000000000000000000 +249a:0000000043004480c840c840484048404840444043c0404040404840484044b0e33000000000000000000000 +249b:00000000610092809440144024402440244024404440444044408440844082b0f93000000000000000000000 +249c:00000000402040208010801080108f9098d090d083d09cd0b0d0b0d0b0d0b9d09ef040204020000000000000 +249d:0000000040205020b010f010b010b390b7d0b8f0b070b070b070b070b870bcd0a79040204020000000000000 +249e:00000000402040208010801080109f90b1d0a0d0e010e010e010e010f050b0d09f9040204020000000000000 +249f:00000000402041e080d080d080d08ed0b3d0a1d0e0d0e0d0e0d0e0d0f1d0bad09cd040204020000000000000 +24a0:0000000040204020801080108010871098d0b070b070bff0b010b01098108c70879040204020000000000000 +24a1:0000000043a044e084d08c108c108c108c109f908c108c108c108c108c108c109e1040204020000000000000 +24a2:00000000402040208010801080108f3099f0b0d0b0d0b0d099909f10b010bfd09ff05060602020201fe00fc0 +24a3:0000000050207020f010b010b010b790b9d0b0d0b0d0b0d0b0d0b0d0b0d0b0d0f9f040204020000000000000 +24a4:00000000402046208610801080109e10861086108610861086108610861086109f9040204020000000000000 +24a5:00000000402041a0819080108010879081908190819081908190819081908190819051a059a01f000e000000 +24a6:000000004020b020f010b010b010b1d0b310b610bc10b810bc10b610b710b390f9f040204020000000000000 +24a7:000000005e2046208610861086108610861086108610861086108610861086109f9040204020000000000000 +24a8:0000000040204020801080108010ddd0eef0e670e670e670e670e670e670e670ef7040204020000000000000 +24a9:0000000040204020801080108010a790f9d0b0d0b0d0b0d0b0d0b0d0b0d0b0d0f9f040204020000000000000 +24aa:000000004020402080108010801087108b9091d0b0d0b0d0b0d0b0d0b8909d108e1040204020000000000000 +24ab:0000000040204020801080108010f710bb90b1d0b0d0b0d0b0d0b0d0b090b910fe1070207020300030007800 +24ac:000000004020402080108010801086708bd091d0b0d0b0d0b0d0b0d0b8d09dd08fd040e040e000c000c001e0 +24ad:0000000040204020801080108010f390b4d0b8d0b010b010b010b010b010b010f81040204020000000000000 +24ae:00000000402040208010801080109fd0b0d0b050b8109e10879081d0a0d0b0d0bf9040204020000000000000 +24af:0000000040204020841084108c10ffd08c108c108c108c108c108c108c308e50879040204020000000000000 +24b0:0000000040204020801080108010f9f0b0d0b0d0b0d0b0d0b0d0b0d0b0d0b9d09e7040204020000000000000 +24b1:0000000040204020801080108010f070e030b050b050989098908d108d108610861040204020000000000000 +24b2:0000000040204020801080108010ff70e630e630e630b750bb50bb5099909990999040204020000000000000 +24b3:0000000040204020801080108010f8f0f050b8909d108e1087108b9091d0a0f0f1f040204020000000000000 +24b4:0000000040204020801080108010f0f0e030b050b050989098908d108d108610861044204c20080078007000 +24b5:0000000040204020801080108010fff0e0f0c1d0839087108e109c10b830f070fff040204020000000000000 +24b6:1f8020404020462086108b108b108910919091909090bfd0a0d0a050c070c070e0f04020402020401f800000 +24b7:1f80204040207f20b090b0d0b0d0b0d0b190bf90b0d0b070b070b070b070b0d0bf904020402020401f800000 +24b8:1f802040402047a088d090509010b010b010b010b010b010b010901098508c9087104020402020401f800000 +24b9:1f80204040207e20b390b190b0d0b0d0b0d0b0d0b0d0b0d0b0d0b0d0b090b310bc104020402020401f800000 +24ba:1f80204040207fe0b050b050b010b010b090bf90b090b010b010b010b030b030fff04020402020401f800000 +24bb:1f80204040207fe0b050b050b010b010b090bf90b090b010b010b010b010b010f8104020402020401f800000 +24bc:1f802040402047a0887090309010b010b010b010b010b1f0b070907098708c7087904020402020401f800000 +24bd:1f8020404020f9f0b0d0b0d0b0d0b0d0b0d0bfd0b0d0b0d0b0d0b0d0b0d0b0d0f9f04020402020401f800000 +24be:1f80204040205fa08610861086108610861086108610861086108610861086109f904020402020401f800000 +24bf:1f80204040205fa086108610861086108610861086108610861086108610861084107820702020401f800000 +24c0:1f80204040207860b0d0b190b310b610bc10bc10be10b710b390b1d0b0f0b070f8304020402020401f800000 +24c1:1f80204040207820b010b010b010b010b010b010b010b010b010b010b030b030fff04020402020401f800000 +24c2:1f80204040206060b0d0b8d0b8d0b8d0ad50ad50ad50a750a650a650a250a250e2d04020402020401f800000 +24c3:1f80204040206060b050b850b850ac50a450a650a650a250a350a1d0a0d0a0d0e0f04020402020401f800000 +24c4:1f80204040204e209390a190a0d0e0d0e0d0e0d0e0d0e0d0e0d0a090b09099108e104020402020401f800000 +24c5:1f80204040207f80b0d0b070b070b070b0d0b790b010b010b010b010b010b010f8104020402020401f800000 +24c6:1f80204040204e209390a190a0d0e0d0e0d0e0d0e0d0e8d0e4d0b290b9909fd08cd04020402020401f800000 +24c7:1f80204040207f00b190b0d0b0d0b0d0b090bf10bc10b610b710b390b1d0b0f0b8704020402020401f800000 +24c8:1f80204040201fe0b070e030e030f010bc109e10879081d080f0c070c070e0d0ff904020402020401f800000 +24c9:1f80204040207fe0c630861086108610861086108610861086108610861086109f904020402020401f800000 +24ca:1f80204040207060b050b050b050b050b050b050b050b050b050b050b8909f108e104020402020401f800000 +24cb:1f802040402060e0e050b090b090b0909910991099108c108e108e108410841084104020402020401f800000 +24cc:1f80204040207ee0e630e630e630f630f750b350b750bbd0bb9099909990999099904020402020401f800000 +24cd:1f80204040207060e030b050b89098908d10861086108b10919091d0a0d0c070e0f04020402020401f800000 +24ce:1f80204040207060e030b050989098908d1086108610861086108610861086108f104020402020401f800000 +24cf:1f80204040207fe0a0d080d08190819083108310861086108c108c1098109830bff04020402020401f800000 +24d0:1f802040402040208010801080108f9098d090d083d09cd0b0d0b0d0b0d0b9d09ef04020402020401f800000 +24d1:1f80204040205020b010f010b010b390b7d0b8f0b070b070b070b070b870bcd0a7904020402020401f800000 +24d2:1f802040402040208010801080109f90b1d0a0d0e010e010e010e010f050b0d09f904020402020401f800000 +24d3:1f802040402041e080d080d080d08ed0b3d0a1d0e0d0e0d0e0d0e0d0f1d0bad09cd04020402020401f800000 +24d4:1f80204040204020801080108010871098d0b070b070bff0b010b01098108c7087904020402020401f800000 +24d5:1f80204043a044e084d08c108c108c108c109f908c108c108c108c108c108c109e104020402020401f800000 +24d6:1f80204040204020801080108f3099f0b0d0b0d0b0d099909f10b010bfd09ff09070a030a0305fe03fc01f80 +24d7:1f80204050207020f010b010b010b790b9d0b0d0b0d0b0d0b0d0b0d0b0d0b0d0f9f04020402020401f800000 +24d8:1f802040402046208610801080109e10861086108610861086108610861086109f904020402020401f800000 +24d9:1f802040402041a0819080108010879081908190819081908190819081908190819051a059a03f401f800000 +24da:1f8020404020b020f010b010b010b1d0b310b610bc10b810bc10b610b710b390f9f04020402020401f800000 +24db:1f8020405e2046208610861086108610861086108610861086108610861086109f904020402020401f800000 +24dc:1f80204040204020801080108010ddd0eef0e670e670e670e670e670e670e670ef704020402020401f800000 +24dd:1f80204040204020801080108010a790f9d0b0d0b0d0b0d0b0d0b0d0b0d0b0d0f9f04020402020401f800000 +24de:1f8020404020402080108010801087108b9091d0b0d0b0d0b0d0b0d0b8909d108e104020402020401f800000 +24df:1f802040402040208010f710bb90b1d0b0d0b0d0b0d0b0d0b090b910be10b010b0107010702030401f800000 +24e0:1f80204040204020801086708bd091d0b0d0b0d0b0d0b0d0b8d09dd08fd080d080d040e040e020c01f800000 +24e1:1f80204040204020801080108010f390b4d0b8d0b010b010b010b010b010b010f8104020402020401f800000 +24e2:1f802040402040208010801080109fd0b0d0b050b8109e10879081d0a0d0b0d0bf904020402020401f800000 +24e3:1f80204040204020841084108c10ffd08c108c108c108c108c108c108c308e5087904020402020401f800000 +24e4:1f80204040204020801080108010f9f0b0d0b0d0b0d0b0d0b0d0b0d0b0d0b9d09e704020402020401f800000 +24e5:1f80204040204020801080108010f070e030b050b050989098908d108d10861086104020402020401f800000 +24e6:1f80204040204020801080108010ff70e630e630e630b750bb50bb509990999099904020402020401f800000 +24e7:1f80204040204020801080108010f8f0f050b8909d108e1087108b9091d0a0f0f1f04020402020401f800000 +24e8:1f802040402040208010f0f0e030b050b050989098908d108d108610861084108c104820782030401f800000 +24e9:1f80204040204020801080108010fff0e0f0c1d0839087108e109c10b830f070fff04020402020401f800000 +24ea:1f80204047204fa0919090d0b0d0b0d0b0d0b0d0b0d0b0d0b0d0b09098909f108e104020402020401f800000 +24eb:00000f003fc07fe07fe0e670c470e670e670e670e670e670e6707fe07fe03fc00f0000000000000000000000 +24ec:00000f003fc07fe07fe0cc70c930cf30ce70ccf0c9f0c9f0c8307fe07fe03fc00f0000000000000000000000 +24ed:00000f003fc07fe07fe0cc70c930cf30ce70ce70cf30c930cc707fe07fe03fc00f0000000000000000000000 +24ee:00000f003fc07fe07fe0ce70ccf0c9f0c930c930c830cf30cf307fe07fe03fc00f0000000000000000000000 +24ef:00000f003fc07fe07fe0c830c9f0c9f0c870cf30cf30c930cc707fe07fe03fc00f0000000000000000000000 +24f0:00000f003fc07fe07fe0ce70ccf0c9f0c870c930c930c930cc707fe07fe03fc00f0000000000000000000000 +24f1:00000f003fc07fe07fe0c830cf30cf30ce70ce70ccf0ccf0ccf07fe07fe03fc00f0000000000000000000000 +24f2:00000f003fc07fe07fe0cc70c930c930cc70c930c930c930cc707fe07fe03fc00f0000000000000000000000 +24f3:00000f003fc07fe07fe0cc70c930c930c930cc30cf30ce70ccf07fe07fe03fc00f0000000000000000000000 +24f4:00000f003fc07fe07fe0ce70b5b0f5b0edb0edb0ddb0ddb086707fe07fe03fc00f0000000000000000000000 +24f5:0f0030c040204f20b0d0402046208e109e1086108610861086108610861046204020b0d04f20402030c00f00 +24f6:0f0030c040204f20b0d040204f20919081908190831086108c10981098105fa04020b0d04f20402030c00f00 +24f7:0f0030c040204f20b0d040204f20989080d080d08f1080d080d080d098904f204020b0d04f20402030c00f00 +24f8:0f0030c040204f20b0d0402041a0831086108c109990b190bfd08190819041a04020b0d04f20402030c00f00 +24f9:0f0030c040204f20b0d040205fa09810981098109f9081908190819099904f204020b0d04f20402030c00f00 +24fa:0f0030c040204f20b0d040204f20b0d0b0d0b0108f10b0d0b0d0b0d0b0d04f204020b0d04f20402030c00f00 +24fb:0f0030c040204f20b0d040205fa0819083108310861086108c108c10981058204020b0d04f20402030c00f00 +24fc:0f0030c040204f20b0d040204f20b0d0b0d0b0d08f10b0d0b0d0b0d0b0d04f204020b0d04f20402030c00f00 +24fd:0f0030c040204f20b0d040204f20b0d0b0d0b0d0b0d08fd080d080d0b0d04f204020b0d04f20402030c00f00 +24fe:0f0030c040204f20b0d040204020b390b6d0b6d0b6d0b6d0b6d0b6d0b39040204020b0d04f20402030c00f00 +24ff:00000f003fc07fe07fe0e070c630cf30cf30cf30cf30c630e0707fe07fe03fc00f0000000000000000000000 2500:0000000000000000000000000000000000000000fff0fff00000000000000000000000000000000000000000 2501:000000000000000000000000000000000000fff0fff0fff0fff0000000000000000000000000000000000000 2502:0600060006000600060006000600060006000600060006000600060006000600060006000600060006000600 2503:0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f00 +2504:0000000000000000000000000000000000000000777077700000000000000000000000000000000000000000 +2505:0000000000000000000000000000000000007770777077707770000000000000000000000000000000000000 +2506:0000000006000600060006000000000000000600060006000600000000000000060006000600060000000000 +2507:000000000f000f000f000f000000000000000f000f000f000f000000000000000f000f000f000f0000000000 +2508:00000000000000000000000000000000000000006db06db00000000000000000000000000000000000000000 +2509:0000000000000000000000000000000000006db06db06db06db0000000000000000000000000000000000000 +250a:0000060006000600060000000000060006000600000000000600060006000600000000000600060006000000 +250b:00000f000f000f000f00000000000f000f000f00000000000f000f000f000f00000000000f000f000f000000 250c:000000000000000000000000000000000000000007f007f00600060006000600060006000600060006000600 250d:00000000000000000000000000000000000007f007f007f007f0060006000600060006000600060006000600 250e:00000000000000000000000000000000000000000ff00ff00f000f000f000f000f000f000f000f000f000f00 @@ -464,6 +3000,10 @@ 2549:0f000f000f000f000f000f000f000f000f00ff00fff0fff0ff000f000f000f000f000f000f000f000f000f00 254a:0f000f000f000f000f000f000f000f000f000ff0fff0fff00ff00f000f000f000f000f000f000f000f000f00 254b:0f000f000f000f000f000f000f000f000f00fff0fff0fff0fff00f000f000f000f000f000f000f000f000f00 +254c:000000000000000000000000000000000000000079e079e00000000000000000000000000000000000000000 +254d:00000000000000000000000000000000000079e079e079e079e0000000000000000000000000000000000000 +254e:0000000006000600060006000600060006000000000000000000060006000600060006000600060000000000 +254f:000000000f000f000f000f000f000f000f0000000000000000000f000f000f000f000f000f000f0000000000 2550:000000000000000000000000000000000000fff000000000fff0000000000000000000000000000000000000 2551:0900090009000900090009000900090009000900090009000900090009000900090009000900090009000900 2552:00000000000000000000000000000000000007f00600060007f0060006000600060006000600060006000600 @@ -497,8 +3037,1551 @@ 256e:0000000000000000000000000000000000000000e000f8001c000c0006000600060006000600060006000600 256f:060006000600060006000600060006000c001c00f800e0000000000000000000000000000000000000000000 2570:060006000600060006000600060006000300038001f000700000000000000000000000000000000000000000 +2571:0010002000200040004000800080010001000200020004000400080008001000100020002000400040008000 +2572:8000400040002000200010001000080008000400040002000200010001000080008000400040002000200010 +2573:8010402040202040204010801080090009000600060006000600090009001080108020402040402040208010 +2574:0000000000000000000000000000000000000000fc00fc000000000000000000000000000000000000000000 +2575:0600060006000600060006000600060006000600060000000000000000000000000000000000000000000000 +2576:000000000000000000000000000000000000000003f003f00000000000000000000000000000000000000000 +2577:0000000000000000000000000000000000000000000006000600060006000600060006000600060006000600 +2578:000000000000000000000000000000000000fc00fc00fc00fc00000000000000000000000000000000000000 +2579:0f000f000f000f000f000f000f000f000f000f000f0000000000000000000000000000000000000000000000 +257a:00000000000000000000000000000000000003f003f003f003f0000000000000000000000000000000000000 +257b:000000000000000000000000000000000000000000000f000f000f000f000f000f000f000f000f000f000f00 +257c:00000000000000000000000000000000000003f0fff0fff003f0000000000000000000000000000000000000 +257d:060006000600060006000600060006000600060006000f000f000f000f000f000f000f000f000f000f000f00 +257e:000000000000000000000000000000000000fc00fff0fff0fc00000000000000000000000000000000000000 +257f:0f000f000f000f000f000f000f000f000f000f000f0006000600060006000600060006000600060006000600 +2580:fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff000000000000000000000000000000000000000000000 +2581:0000000000000000000000000000000000000000000000000000000000000000000000000000fff0fff0fff0 +2582:0000000000000000000000000000000000000000000000000000000000000000fff0fff0fff0fff0fff0fff0 +2583:0000000000000000000000000000000000000000000000000000fff0fff0fff0fff0fff0fff0fff0fff0fff0 +2584:00000000000000000000000000000000000000000000fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0 +2585:000000000000000000000000000000000000fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0 +2586:000000000000000000000000fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0 +2587:000000000000fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0 +2588:fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0 +2589:ffc0ffc0ffc0ffc0ffc0ffc0ffc0ffc0ffc0ffc0ffc0ffc0ffc0ffc0ffc0ffc0ffc0ffc0ffc0ffc0ffc0ffc0 +258a:ff80ff80ff80ff80ff80ff80ff80ff80ff80ff80ff80ff80ff80ff80ff80ff80ff80ff80ff80ff80ff80ff80 +258b:fe00fe00fe00fe00fe00fe00fe00fe00fe00fe00fe00fe00fe00fe00fe00fe00fe00fe00fe00fe00fe00fe00 +258c:fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00 +258d:f800f800f800f800f800f800f800f800f800f800f800f800f800f800f800f800f800f800f800f800f800f800 +258e:e000e000e000e000e000e000e000e000e000e000e000e000e000e000e000e000e000e000e000e000e000e000 +258f:c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000c000 +2590:03f003f003f003f003f003f003f003f003f003f003f003f003f003f003f003f003f003f003f003f003f003f0 2591:aaa00000aaa00000aaa00000aaa00000aaa00000aaa00000aaa00000aaa00000aaa00000aaa00000aaa00000 2592:3330ccc03330ccc03330ccc03330ccc03330ccc03330ccc03330ccc03330ccc03330ccc03330ccc03330ccc0 2593:fff0aaa0fff0aaa0fff0aaa0fff0aaa0fff0aaa0fff0aaa0fff0aaa0fff0aaa0fff0aaa0fff0aaa0fff0aaa0 +2594:fff0fff0fff00000000000000000000000000000000000000000000000000000000000000000000000000000 +2595:0030003000300030003000300030003000300030003000300030003000300030003000300030003000300030 +2596:00000000000000000000000000000000000000000000fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00 +2597:0000000000000000000000000000000000000000000003f003f003f003f003f003f003f003f003f003f003f0 +2598:fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc0000000000000000000000000000000000000000000000 +2599:fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0 +259a:fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc0003f003f003f003f003f003f003f003f003f003f003f0 +259b:fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00 +259c:fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff003f003f003f003f003f003f003f003f003f003f003f0 +259d:03f003f003f003f003f003f003f003f003f003f003f000000000000000000000000000000000000000000000 +259e:03f003f003f003f003f003f003f003f003f003f003f0fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00fc00 +259f:03f003f003f003f003f003f003f003f003f003f003f0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0fff0 +25a0:000000000000000000000000ffe0ffe0ffe0ffe0ffe0ffe0ffe0ffe0ffe0ffe0ffe000000000000000000000 +25a1:000000000000000000000000ffe0802080208020802080208020802080208020ffe000000000000000000000 +25a2:0000000000000000000000007fc08020802080208020802080208020802080207fc000000000000000000000 +25a3:000000000000000000000000ffe0802080209f209f209f209f209f2080208020ffe000000000000000000000 +25a4:000000000000000000000000ffe08020ffe08020ffe08020ffe08020ffe08020ffe000000000000000000000 +25a5:000000000000000000000000ffe0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0aaa0ffe000000000000000000000 +25a6:000000000000000000000000ffe0aaa0ffe0aaa0ffe0aaa0ffe0aaa0ffe0aaa0ffe000000000000000000000 +25a7:000000000000000000000000ffe0c920a4a09260c920a4a09260c920a4a09260ffe000000000000000000000 +25a8:000000000000000000000000ffe09260a4a0c9209260a4a0c9209260a4a0c920ffe000000000000000000000 +25a9:000000000000000000000000ffe0c460aaa09120aaa0c460aaa09120aaa0c460ffe000000000000000000000 +25aa:0000000000000000000000000000000000001f001f001f001f001f0000000000000000000000000000000000 +25ab:0000000000000000000000000000000000001f001100110011001f0000000000000000000000000000000000 +25ac:000000000000000000000000000000000000fff0fff0fff0fff0fff000000000000000000000000000000000 +25ad:000000000000000000000000000000000000fff0801080108010fff000000000000000000000000000000000 +25ae:00001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f001f000000 +25af:00001f001100110011001100110011001100110011001100110011001100110011001100110011001f000000 +25b0:0000000000000000000000000000000000001ff03ff07fe0ffc0ff8000000000000000000000000000000000 +25b1:0000000000000000000000000000000000001ff0201040208040ff8000000000000000000000000000000000 +25b2:00000000000000000000060006000f000f001f801f803fc03fc07fe07fe0fff0fff000000000000000000000 +25b3:0000000000000000000006000600090009001080108020402040402040208010fff000000000000000000000 +25b4:0000000000000000000000000000060006000f000f001f801f803fc03fc00000000000000000000000000000 +25b5:000000000000000000000000000006000600090009001080108020403fc00000000000000000000000000000 +25b6:00000000000000000000c000f000fc00ff00ffc0fff0fff0ffc0ff00fc00f000c00000000000000000000000 +25b7:00000000000000000000c000b0008c00830080c08030803080c083008c00b000c00000000000000000000000 +25b8:0000000000000000000000000000000030003c003f003fc03fc03f003c003000000000000000000000000000 +25b9:000000000000000000000000000030002c00230020c020c023002c0030000000000000000000000000000000 +25ba:0000000000000000000000000000e000fc00ff80fff0fff0ff80fc00e0000000000000000000000000000000 +25bb:0000000000000000000000000000e0009c0083808070807083809c00e0000000000000000000000000000000 +25bc:00000000000000000000fff0fff07fe07fe03fc03fc01f801f800f000f000600060000000000000000000000 +25bd:00000000000000000000fff08010402040202040204010801080090009000600060000000000000000000000 +25be:00000000000000000000000000003fc03fc01f801f800f000f00060006000000000000000000000000000000 +25bf:00000000000000000000000000003fc020401080108009000900060006000000000000000000000000000000 +25c0:00000000000000000000003000f003f00ff03ff0fff0fff03ff00ff003f000f0003000000000000000000000 +25c1:00000000000000000000003000d003100c103010c010c01030100c10031000d0003000000000000000000000 +25c2:0000000000000000000000000000000000c003c00fc03fc03fc00fc003c000c0000000000000000000000000 +25c3:000000000000000000000000000000c003400c40304030400c40034000c00000000000000000000000000000 +25c4:0000000000000000000000000000007003f01ff0fff0fff01ff003f000700000000000000000000000000000 +25c5:0000000000000000000000000000007003901c10e010e0101c10039000700000000000000000000000000000 25c6:0000000000000000000006000f001f803fc07fe0fff0fff07fe03fc01f800f00060000000000000000000000 -fffd:000000007fe07fe0606060606060606060606060606060606060606060607fe07fe000000000000000000000 +25c7:0000000000000000000006000900108020404020801080104020204010800900060000000000000000000000 +25c8:0000000000000000000006000900108026404f209f909f904f20264010800900060000000000000000000000 +25c9:000000000000000000001f8020405fa05fa0bfd0bfd0bfd0bfd05fa05fa020401f8000000000000000000000 +25ca:0600060009000900108010802040204040204020801080104020402020402040108010800900090006000600 +25cb:000000000000000000001f8020404020402080108010801080104020402020401f8000000000000000000000 +25cc:0000000000000000000016800000402000008010000000008010000040200000168000000000000000000000 +25cd:000000000000000000001f80294049204920c930c930c930c9304920492029401f8000000000000000000000 +25ce:000000000000000000001f8020404f2050a0a050a050a050a05050a04f2020401f8000000000000000000000 +25cf:000000000000000000001f803fc07fe07fe0fff0fff0fff0fff07fe07fe03fc01f8000000000000000000000 +25d0:000000000000000000001f803c407c207c20fc10fc10fc10fc107c207c203c401f8000000000000000000000 +25d1:000000000000000000001f8023c043e043e083f083f083f083f043e043e023c01f8000000000000000000000 +25d2:000000000000000000001f8020404020402080108010fff0fff07fe07fe03fc01f8000000000000000000000 +25d3:000000000000000000001f803fc07fe07fe0fff0fff0801080104020402020401f8000000000000000000000 +25d4:000000000000000000001f8023c043e043e083f083f0801080104020402020401f8000000000000000000000 +25d5:000000000000000000001f8023c043e043e083f083f0fff0fff07fe07fe03fc01f8000000000000000000000 +25d6:000000000000000000001c003c007c007c00fc00fc00fc00fc007c007c003c001c0000000000000000000000 +25d7:00000000000000000000038003c003e003e003f003f003f003f003e003e003c0038000000000000000000000 +25d8:00000000000000003fe03fe03fe03fe038e030603060306038e03fe03fe03fe03fe000000000000000000000 +25d9:000000000000fff0e070dfb0bfd07fe07fe0fff0fff0fff0fff07fe07fe0bfd0dfb0e070fff0000000000000 +25da:000000000000fff0e070dfb0bfd07fe07fe0fff0fff000000000000000000000000000000000000000000000 +25db:00000000000000000000000000000000000000000000fff0fff07fe07fe0bfd0dfb0e070fff0000000000000 +25dc:000000000000000000001c002000400040008000800000000000000000000000000000000000000000000000 +25dd:0000000000000000000003800040002000200010001000000000000000000000000000000000000000000000 +25de:0000000000000000000000000000000000000000000000100010002000200040038000000000000000000000 +25df:00000000000000000000000000000000000000000000800080004000400020001c0000000000000000000000 +25e0:000000000000000000001f802040402040208010801000000000000000000000000000000000000000000000 +25e1:00000000000000000000000000000000000000000000801080104020402020401f8000000000000000000000 +25e2:0000000000000000000000100030007000f001f003f007f00ff01ff03ff07ff0fff000000000000000000000 +25e3:000000000000000000008000c000e000f000f800fc00fe00ff00ff80ffc0ffe0fff000000000000000000000 +25e4:00000000000000000000fff0ffe0ffc0ff80ff00fe00fc00f800f000e000c000800000000000000000000000 +25e5:00000000000000000000fff07ff03ff01ff00ff007f003f001f000f000700030001000000000000000000000 +25e6:0000000000000000000000000000000007000880088008800700000000000000000000000000000000000000 +25e7:00000000000000000000fff0fc10fc10fc10fc10fc10fc10fc10fc10fc10fc10fff000000000000000000000 +25e8:00000000000000000000fff083f083f083f083f083f083f083f083f083f083f0fff000000000000000000000 +25e9:00000000000000000000fff0fff0ffd0ff90ff10fe10fc10f810f010e010c010fff000000000000000000000 +25ea:00000000000000000000fff08030807080f081f083f087f08ff09ff0bff0fff0fff000000000000000000000 +25eb:00000000000000000000fff08610861086108610861086108610861086108610fff000000000000000000000 +25ec:0000000000000000000006000600090009001080108026402f404f2046208010fff000000000000000000000 +25ed:00000000000000000000060006000d000d001c801c803c403c407c207c20fc10fff000000000000000000000 +25ee:00000000000000000000060006000b000b001380138023c023c043e043e083f0fff000000000000000000000 +25ef:000000000000000000001f8020404020402080108010801080104020402020401f8000000000000000000000 +25f0:00000000000000000000fff08210821082108210fe1080108010801080108010fff000000000000000000000 +25f1:00000000000000000000fff080108010801080108010fe108210821082108210fff000000000000000000000 +25f2:00000000000000000000fff08010801080108010801087f08410841084108410fff000000000000000000000 +25f3:00000000000000000000fff0841084108410841087f080108010801080108010fff000000000000000000000 +25f4:000000000000000000001f802240422042208210fe10801080104020402020401f8000000000000000000000 +25f5:000000000000000000001f8020404020402080108010fe1082104220422022401f8000000000000000000000 +25f6:000000000000000000001f802040402040208010801087f084104420442024401f8000000000000000000000 +25f7:000000000000000000001f80244044204420841087f0801080104020402020401f8000000000000000000000 +25f8:00000000000000000000fff080208040808081008200840088009000a000c000800000000000000000000000 +25f9:00000000000000000000fff04010201010100810041002100110009000500030001000000000000000000000 +25fa:000000000000000000008000c000a00090008800840082008100808080408020fff000000000000000000000 +25fb:0000000000000000000000007fe0402040204020402040204020402040207fe0000000000000000000000000 +25fc:0000000000000000000000007fe07fe07fe07fe07fe07fe07fe07fe07fe07fe0000000000000000000000000 +25fd:00000000000000000000000000000000000000000000ff0000810000810000810000810000810000810000ff00000000000000000000000000000000000000000000 +25fe:00000000000000000000000000000000000000000000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff00000000000000000000000000000000000000000000 +25ff:0000000000000000000000100030005000900110021004100810101020104010fff000000000000000000000 +2600:000000000000000004008420444020800e001f00df601f000e00208044408420040000000000000000000000 +2601:0000000000000000000000000000000000c019e03de03ff07ff07ff0fff0fff07fe000000000000000000000 +2602:000000001f807fe0fff0fff006000600060006000600060006000600660066003c0000000000000000000000 +2603:1f801080fff01f8026407fe07fe0666030c01f801f803fc079e0fff0f9f0fff079e03fc01f80000000000000 +2604:0000000000000000020002000400040008200840108011002200240008606180960090006000000000000000 +2605:0000000000000000060006000f000f00fff07fe03fc01f800f001f801f8039c030c000000000000000000000 +2606:00000000000000000600060009000900f9f0402020401080090010801680294030c000000000000000000000 +2607:0000008001c0038007000e001c003800700038001c000e00072003e001e001e003e000000000000000000000 +2608:000000000000fff0ffe0c1c0c380c700ce00dc00ce00c700c390c1f0c0f0c0f0c1f000000000000000000000 +2609:00000000000000000e0031804040404080208e208e208e2080204040404031800e0000000000000000000000 +260a:0000000000000600198020404020402080108010402040202040204060609090909060600000000000000000 +260b:0000000000006060909090906060204020404020402080108010402040202040198006000000000000000000 +260c:00000000000000000020004000801d00220041004100410022001c0000000000000000000000000000000000 +260d:000001c00220041004100410022001c002000400380044008200820082004400380000000000000000000000 +260e:000000000000000000003fc07fe0fff0e070d0b01f8039c070e0e070f0f0f9f0fff000000000000000000000 +260f:000000000000000000003fc040209f90a050d0b01f80204046208f1086108010fff000000000000000000000 +2610:00000000000000000000fff08010801080108010801080108010801080108010fff000000000000000000000 +2611:00000000000000000000fff0801080d0819081908310e310b6109e108c108010fff000000000000000000000 +2612:00000000000000000000fff08010a050909089108610861089109090a0508010fff000000000000000000000 +2613:00000000000030c030c0198019800f000f00060006000f000f001980198030c030c000000000000000000000 +2614:00208008208408410410410810000800fe0007ffe00ffff01ffff800180000180000180000180000180000180000180000180000180003180003180001f00000e000 +2615:0000001861801861800c30c00618600618600c30c01861800000007fffc07fffc06000f86000fe3001863001861803fe0c07f807fc0003f800000000000000000000 +2616:0000000000000600198060604020402040208010801080108010801080108010fff000000000000000000000 +2617:00000000000006001f807fe07fe07fe07fe0fff0fff0fff0fff0fff0fff0fff0fff000000000000000000000 +2618:00000000000019801f801f800f00e670f6f079e0f6f0e670060006000c000c000c0000000000000000000000 +2619:000000000000000000100020004006400f203fc07fa0ff10ff107f903f900f20064000000000000000000000 +261a:00000000000000000000000001c007e0ffd0ffd007d007d007d003d003d003d001e000000000000000000000 +261b:00000000000000000000000038007e00bff0bff0be00be00be00bc00bc00bc00780000000000000000000000 +261c:00000000000000000000000001c00620791082107e100410079002100390021001e000000000000000000000 +261d:00000100028002800280028002800e407a40aa20a9a0aa608110802080407f804080ffc0ffc0000000000000 +261e:0000000000000000000000003800460089e0841087e082009e0084009c008400780000000000000000000000 +261f:0000ffc0ffc040807f80804080208110aa60a9a0aa207a400e40028002800280028002800100000000000000 +2620:00003f807fc0ffe0ce60842084207bc071c03f8055407fc00000c060f1e03f800e003f80f1e0c06000000000 +2621:0000000000000000fc00fff003f000f001e003c00f003c007800f000fc00fff003f000000000000000000000 +2622:00000f0030c040206060f0f0f9f0fff0f9f08010861086108f104f205fa03fc00f0000000000000000000000 +2623:0000000000001080204020402040108016800900168079e096900f0006000600090030c00000000000000000 +2624:000000000600fff07fe03fc006007fe086107fe046203fc026401f8026401f8026401f801680060000000000 +2625:000000000f00198030c030c030c0198019800f007fe07fe00600060006000600060006000600060000000000 +2626:00000000060006001f801f80060006007fe07fe006000600060006003e000f0007c006000600060000000000 +2627:000000001fc00c600c300c300c300c600dc00c00ccc06d803f001e003f006d80ccc000000000000000000000 +2628:00000000060006001f801f80060006007fe07fe0060006000600060006000600060006000600060000000000 +2629:0000000000000000000000001f000400040084208420ffe084208420040004001f0000000000000000000000 +262a:00000000000000000e003d8078007040f040f1f0f040f0a0f000700078003d800e0000000000000000000000 +262b:000009000f000000462056a09690b6d0b6d0b6d0b6d0b6d0b6d09f905fa00f003fc000000000000000000000 +262c:0000000006004f209690969096909690cf3060607fe03fc026400f001680264046200f000000000000000000 +262d:00000e00338000c000c0006007600e601f603be031e000e000f033b06e10c000800000000000000000000000 +262e:00000000000000000e00358044404440842084208e209520a4a04440444035800e0000000000000000000000 +262f:00000000000000000f0030c040207020f810ccd0ccd0fe10ff307fe07fe03fc00f0000000000000000000000 +2630:00000000fff0fff0fff0000000000000fff0fff0fff0000000000000fff0fff0fff000000000000000000000 +2631:00000000f9f0f9f0f9f0000000000000fff0fff0fff0000000000000fff0fff0fff000000000000000000000 +2632:00000000fff0fff0fff0000000000000f9f0f9f0f9f0000000000000fff0fff0fff000000000000000000000 +2633:00000000f9f0f9f0f9f0000000000000f9f0f9f0f9f0000000000000fff0fff0fff000000000000000000000 +2634:00000000fff0fff0fff0000000000000fff0fff0fff0000000000000f9f0f9f0f9f000000000000000000000 +2635:00000000f9f0f9f0f9f0000000000000fff0fff0fff0000000000000f9f0f9f0f9f000000000000000000000 +2636:00000000fff0fff0fff0000000000000f9f0f9f0f9f0000000000000f9f0f9f0f9f000000000000000000000 +2637:00000000f9f0f9f0f9f0000000000000f9f0f9f0f9f0000000000000f9f0f9f0f9f000000000000000000000 +2638:00000000000000000000000004005f40248055404e40fbe04e40554024805f40040000000000000000000000 +2639:000000000000000000001f80204040204920891080108f10909050a0402020401f8000000000000000000000 +263a:000000000000000000001f8020404020492089108010a05090904f20402020401f8000000000000000000000 +263b:000000000000000000001f803fc07fe06660e670fff0cf30e67070e07fe03fc01f8000000000000000000000 +263c:000000000000000000000000040084204e4011002080e0e0208011004e408420040000000000000000000000 +263d:000000000000000003800d001200140024002400240024002400140012000d00038000000000000000000000 +263e:00000000000000001c000b000480028002400240024002400240028004800b001c0000000000000000000000 +263f:6060606039c01f803fc070e060606060606070e03fc01f80060006007fe07fe0060006000600060006000000 +2640:000000001f803fc070e060606060606070e03fc01f80060006007fe07fe00600060006000600060000000000 +2641:00000000060006000600060006007fe07fe0060006001f803fc070e060606060606070e03fc01f8000000000 +2642:000000000000000003f001f000f001f03fb07f90e1c0c0c0c0c0c0c0e1c07f803f0000000000000000000000 +2643:00000000600060c030c030c018c018c018c030c030c030c060c0fff0fff000c000c000c000c000c000000000 +2644:00000000000030003000fc00fc00300030c033e03e60383030303060306030c030c000c000c000c000000000 +2645:00000600c630666036c03fc03fc036c06660c63006001f803fc070e060606060606070e03fc01f8000000000 +2646:00008610c630ef70c630c630c630c630666076e03fc00f000600060006001f801f8006000600060000000000 +2647:00007e007f8061c060e06060606060e061c07f007e006000600060006000600060007fe07fe0000000000000 +2680:000000000000000000007ff040104010401040104610461040104010401040107ff000000000000000000000 +2681:000000000000000000007ff0401040d040d040104010401040105810581040107ff000000000000000000000 +2682:000000000000000000007ff0401040d040d040104310431040105810581040107ff000000000000000000000 +2683:000000000000000000007ff0401058d058d0401040104010401058d058d040107ff000000000000000000000 +2684:000000000000000000007ff0401058d058d0401046104610401058d058d040107ff000000000000000000000 +2685:000000000000000000007ff0401058d058d0401058d058d0401058d058d040107ff000000000000000000000 +2686:000000000000000000001f8020404020402080108190819080104020402020401f8000000000000000000000 +2687:000000000000000000001f8020404020402080109990999080104020402020401f8000000000000000000000 +2688:000000000000000000001f803fc07fe07fe0fff0fe70fe70fff07fe07fe03fc01f8000000000000000000000 +2689:000000000000000000001f803fc07fe07fe0fff0e670e670fff07fe07fe03fc01f8000000000000000000000 +268a:000000000000000000000000000000000000000000000000fff0fff0fff00000000000000000000000000000 +268b:000000000000000000000000000000000000000000000000f9f0f9f0f9f00000000000000000000000000000 +268c:000000000000000000000000fff0fff0fff0000000000000fff0fff0fff00000000000000000000000000000 +268d:000000000000000000000000f9f0f9f0f9f0000000000000fff0fff0fff00000000000000000000000000000 +268e:000000000000000000000000fff0fff0fff0000000000000f9f0f9f0f9f00000000000000000000000000000 +268f:000000000000000000000000f9f0f9f0f9f0000000000000f9f0f9f0f9f00000000000000000000000000000 +2690:000000000000000000007fe07fe060606060606060607fe07fe0600060006000600000000000000000000000 +2691:000000000000000000007fe07fe07fe07fe07fe07fe07fe07fe0600060006000600000000000000000000000 +26b2:000000001f803fc070e060606060606070e03fc01f8006000600060006000600060006000600060000000000 +26b3:000000001f803fc070e000600060006000e007c00780060006007fe07fe00600060006000600060000000000 +26b4:00000f001f8039c070e0e070c030e07070e039c01f800f00060006007fe07fe0060006000600060000000000 +26b5:00000600c630666036c01f80fff0fff01f8036c06660c630060006007fe07fe0060006000600060000000000 +26b6:00000000060006000600060006000600000070e070e019800f000600e070f0f039c01f800f00060000000000 +26b7:000000000630066006c0078006c006600630060006000f003fc06060c030c03060603fc00f00000000000000 +2700:000000000000000000004000a010b870bdc0478005004780bdc0b870a0104000000000000000000000000000 +2701:0000000000000000000000004000a000a000600030007fc0bff0ac0046000000000000000000000000000000 +2702:000000000000000000004000a010b870bdc0478005004780bdc0b870a0104000000000000000000000000000 +2703:0000000000000000000000004600ac00bff07fc030006000a000a00040000000000000000000000000000000 +2704:000000000000000000004000a010b870bdc0478005004780bdc0b870a0104000000000000000000000000000 +2705:0000000000000000c0000120000110000220000220000440020440050880088880045100022100010200008200004400002400001800000000000000000000000000 +2706:00000f0030c040204da09d909c1098109810981098109c109d904da0502030c00f0000000000000000000000 +2707:00000f003fc04f204f208f108f108f109990bfd0fff0f9f0f0f06060402030c00f0000000000000000000000 +2708:00001000180018000e000e008780c780ffe0fff0ffe0c78087800e000e001800180010000000000000000000 +2709:000000000000fff08010c030a05090908f109f909f908f109090a050c0308010fff000000000000000000000 +270a:00000000000000780003cf001e4900124900124900124900124fc01250301fe010102008101e081000081000100800200601c001fe00000000000000000000000000 +270b:000000003c0001e7800124800724800924800924800924e009249009249009249009001008001008001008002008002004004003008000ff00000000000000000000 +270c:0000000000001ce014a014a00aa00aa005205420a820a9f0aa108010802060c01f0000000000000000000000 +270d:00000000000000000030007000e001c01f8027004ef09c10bc107010eff08000000000000000000000000000 +270e:0000000000000000000018003c007a00f100e88044402220111008b0047002f001f000000000000000000000 +270f:0000000000000000000000000000ff80c040c060fff0c060c040ff8000000000000000000000000000000000 +2710:0000000000000000000001f002f0047008b0111022204440e880f1007a003c00180000000000000000000000 +2711:0000000000000000000000000000e700a880a840b74087f0bf40a840a880e700000000000000000000000000 +2712:0000000000000000000000000000e700ef80efc0fcf0f000fcf0efc0ef80e700000000000000000000000000 +2713:0000000000000020002000400040008000804100410022002200140014000800080000000000000000000000 +2714:0000000000000070007000e000e001c001c0e380e380770077001e001e000c000c0000000000000000000000 +2715:0000000000000000000000004020204010800900060006000900108020404020000000000000000000000000 +2716:000000000000000000000000606070e039c01f800f000f001f8039c070e06060000000000000000000000000 +2717:0000000000000000000000000010102010400880070006000900108020402000000000000000000000000000 +2718:000000000000000000000000003038e039c01f800f001f003b8071c0e0e0e000000000000000000000000000 +2719:00001f801080168016801680f6f08610bfd0bfd08610f6f016801680168010801f8000000000000000000000 +271a:00001f801f801f801f801f80fff0fff0fff0fff0fff0fff01f801f801f801f801f8000000000000000000000 +271b:000000000000060006000600060006000600f9f0f9f006000600060006000600060000000000000000000000 +271c:0000000000000f000f000f000f000f00f0f0f0f0f0f0f0f00f000f000f000f000f0000000000000000000000 +271d:000000000600060006007fe07fe0060006000600060006000600060006000600060000000000000000000000 +271e:00000f000980098079e04030403079f03980098009800980098009800980098009800f800780000000000000 +271f:1f8010801680f6f08610bfd0bfd08610f6f01680168016801680168016801680168010801f80000000000000 +2720:0000000000000000000000003f800e008e208420e4e0ffe0e4e084208e200e003f8000000000000000000000 +2721:0000000000000000060006000900fff0891050a0204050a08910fff009000600060000000000000000000000 +2722:00000000000000000000000004000e000e00040064c0ffe064c004000e000e00040000000000000000000000 +2723:0000000000000000000000000e000e000e000400e4e0ffe0e4e004000e000e000e0000000000000000000000 +2724:0000000000000000000000000e001f001f006ec0f5e0ffe0f5e06ec01f001f000e0000000000000000000000 +2725:00000000000000000000000004000e001f00248064c0ffe064c024801f000e00040000000000000000000000 +2726:00000000000000000000000004000e000e001f007fc0ffe07fc01f000e000e00040000000000000000000000 +2727:00000000000000000000000004000a000a00110060c0802060c011000a000a00040000000000000000000000 +2728:00000000402000e0500040500400880a03060a04013183064040883180500a20500a202004d8001021101020a06c804011c0a0108110000000000000000000000000 +2729:00000000000000000000000004000e000a001b007bc0c0607bc01b000a000e00040000000000000000000000 +272a:0000000000000000000000000e003b807bc071c0e0e08020e0e071c07bc03b800e0000000000000000000000 +272b:00000000000000000000000004000e000e00110060c0e0e060c011000e000e00040000000000000000000000 +272c:00000000000000000000000004000a000a0011006ec08e206ec011000a000a00040000000000000000000000 +272d:00000000000000000000000004000a000a00150064c09f2064c015000a000a00040000000000000000000000 +272e:00000000000000000000000004000a000a0015006ec09f206ec015000a000a00040000000000000000000000 +272f:0000000000000000000006000b000b00138063e083f0fc107c601c800d000d00060000000000000000000000 +2730:00000000000000000000000007000b800b8011c060f0803060f011c00b800b80070000000000000000000000 +2731:000000000e000e00ce60eee0ffe07fc03f801f003f807fc0ffe0eee0ce600e000e0000000000000000000000 +2732:000000000e000e00ce60eee0fbe071c031801100318071c0fbe0eee0ce600e000e0000000000000000000000 +2733:00000000000000000000000004004440248015000e00ffe00e00150024804440040000000000000000000000 +2734:0000000000000000000000000400444064c035801f00ffe01f00358064c04440040000000000000000000000 +2735:0000000000000000000000000600464066c03780ff00ffe01fe03d806cc04c400c0000000000000000000000 +2736:000000000000000000000000040044406ec03f801f000e001f003f806ec04440040000000000000000000000 +2737:00000000000000000000108010801980fff01f80060006001f80fff019801080108000000000000000000000 +2738:00000000000000000000108019801f80fff03fc00f000f003fc0fff01f801980108000000000000000000000 +2739:0000000000000000000000002480150095207fc01f00ffe01f007fc095201500248000000000000000000000 +273a:000000000000000000000000a4a01500952075c00e00ffe00e0075c095201500a4a000000000000000000000 +273b:0000000000000000060066606f603fc000000f000f0000001f803fc06f606660060000000000000000000000 +273c:0000000000000000060066606f603fc01f801080108010801f803fc06f606660060000000000000000000000 +273d:0000000000000000000006006660ef707fe03fc01f801f803fc07fe0ef706660060000000000000000000000 +273e:000000000000000000000f006660e97079e039c01f80168026404f208f1066600f0000000000000000000000 +273f:00000000000000000e001f001f001f006ec0f1e0f1e0f1e03b807fc07fc07fc03b8000000000000000000000 +2740:00000000000000000e001100110071c08e209f209f20ffe03f804440444044403b8000000000000000000000 +2741:0000000000000000000000000e00644034c015808020f1e080203500658044c00e0000000000000000000000 +2742:0000000000000000000000000e003b805b406ec0fbe09120fbe06ec05b403b800e0000000000000000000000 +2743:000000000000000000000e000a00eee0a4a0e4e01f001f00e4e0a4a0eee00a000e0000000000000000000000 +2744:000000000000000000000a000a002e802480e4e01f001f00e4e024802e800a000a0000000000000000000000 +2745:0000000000000000060006000f00fff0f9f070e0204070e0f9f0fff00f000600060000000000000000000000 +2746:0000000000000000090006000f005fa0b9d070e0204070e0b9d05fa00f000600090000000000000000000000 +2747:0000000000000000000000008e204e402e800400e4e0ffe0e4e004002e804e408e2000000000000000000000 +2748:000000000000000000008f105fa00f004620e670fff0fff0e67046200f005fa08f1000000000000000000000 +2749:000000000000000000000e000e00eee0e4e0e4e01f001f00e4e0e4e0eee00e000e0000000000000000000000 +274a:00000000000000000000000084204440248000000400eee00400000024804440842000000000000000000000 +274b:000000000000000000008610c630666036c01f80fff0fff01f8036c06660c630861000000000000000000000 +274c:0000000000000000000000000000000000000100800381c001c38000e700007e00003c00007e0000e70001c3800381c0010080000000000000000000000000000000 +274d:000000000000000000000f0033c040e040e0807080708070807040e040e033c00f0000000000000000000000 +274e:00000000000000000000000007ffe006ff60047e20063c600718e00781e007c3e007c3e00781e00718e0063c60047e2006ff6007ffe0000000000000000000000000 +274f:00000000000000000000ffc08040804080708070807080708070fff03ff03ff0000000000000000000000000 +2750:0000000000000000000000003ff03ff0fff08070807080708070807080408040ffc000000000000000000000 +2751:00000000000000000000ffc080608070807080708070807080708070fff07ff03ff000000000000000000000 +2752:000000000000000000003ff07ff0fff080708070807080708070807080708060ffc000000000000000000000 +2753:00000000000003fe000fff000fff800c1f80000f80000f80000f80000f80001f00003e00007c00007c00000000000000007c00007c00007c00007c00000000000000 +2754:00000000000007fe0008010009f0800f1880000880000880000880000880001100002200004400007c00000000000000007c00004400004400007c00000000000000 +2755:000000000000007c00004400004400004400004400004400004400004400004400004400004400007c00000000000000007c00004400004400007c00000000000000 +2756:0000000000000000020007000f800700124038e07df038e0124007000f800700020000000000000000000000 +2757:00000000000000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff0000ff00000000001800007e0000ff00007e00001800000000000000000000 +2758:0000000006000600060006000600060006000600060006000600060006000600060000000000000000000000 +2759:000000000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f0000000000000000000000 +275a:000000001f801f801f801f801f801f801f801f801f801f801f801f801f801f801f8000000000000000000000 +275b:000007000800100016001f001f001f000e000000000000000000000000000000000000000000000000000000 +275c:00000e001f001f001f000d00010002001c000000000000000000000000000000000000000000000000000000 +275d:0000387040808100b160f9f0f9f0f9f070e00000000000000000000000000000000000000000000000000000 +275e:000070e0f9f0f9f0f9f068d008101020e1c00000000000000000000000000000000000000000000000000000 +275f:00000000000000000000000000000000000000000000000000000e001f001f001f000d00010002001c000000 +2760:000000000000000000000000000000000000000000000000000071c0fbe0fbe0fbe069a008201040e3800000 +2761:0000004000403ff07e407e40fe40fe40fe407e407e403e400fc0004000403c407c40608031000e0000000000 +2762:00007fc0ffe0ffe0ffe0ffe0ffe07fc03f801f000e00040000000e001f001f000e0000000000000000000000 +2763:0000000071c0fbe0ffe0ffe0ffe0ffe07fc03f801f000e0000000e001f001f000e0000000000000000000000 +2764:0000000000000000000070e0f9f0fff0fff0fff0fff07fe03fc01f800f000600060000000000000000000000 +2765:000000000000000000003c007e00ff00ff807fc03ff03ff07fc0ff80ff007e003c0000000000000000000000 +2766:000000001c1063b0c1608200040033007f80ffc0ffc0ffc07f803f001e200c60038000000000000000000000 +2767:000000000000000080004000200026004f003fc05fe08ff08ff09fe09fc04f00260000000000000000000000 +2768:0000000001c007000e001e001c003c003c003c003c003c001c001e000f00070001c000000000000000000000 +2769:0000000038000e0007000780038003c003c003c003c003c0038007800f000e00380000000000000000000000 +276a:0000000003c0078007800f000f000f000f000f000f000f000f000f000780078003c000000000000000000000 +276b:000000003c001e001e000f000f000f000f000f000f000f000f000f001e001e003c0000000000000000000000 +276c:000000000700070007000e000e000e001c001c001c000e000e000e0007000700070000000000000000000000 +276d:000000000e000e000e000700070007000380038003800700070007000e000e000e0000000000000000000000 +276e:0000000000c001c003c007800f001e003c0078003c001e000f00078003c001c000c000000000000000000000 +276f:000000006000700078003c001e000f00078003c007800f001e003c0078007000600000000000000000000000 +2770:000000000780078007800f000f000f001e001e001e000f000f000f0007800780078000000000000000000000 +2771:000000001e001e001e000f000f000f000780078007800f000f000f001e001e001e0000000000000000000000 +2772:000000000100020004000c000c000c000c000c000c000c000c000c000c000c000c0004000200010000000000 +2773:0000000008000400020003000300030003000300030003000300030003000300030002000400080000000000 +2774:0000000003c0078007800f000f000f001e003c001e000f000f000f000780078003c000000000000000000000 +2775:000000003c001e001e000f000f000f00078003c007800f000f000f001e001e003c0000000000000000000000 +2776:00000f003fc07fe079e0f1f0e1f0f9f0f9f0f9f0f9f0f9f0f9f060607fe03fc00f0000000000000000000000 +2777:00000f003fc07fe070e0cf30df30fe70fcf0f9f0f3f0e7f0cfb040207fe03fc00f0000000000000000000000 +2778:00000f003fc07fe070e0ce30df30fe30f070fe30ff30df30ce3070e07fe03fc00f0000000000000000000000 +2779:00000f003fc07fe07e60fcf0f9f0f3f0e670ce70c030fe70fe707c207fe03fc00f0000000000000000000000 +277a:00000f003fc07fe04020cfb0cff0cff0e0f0fe30ff30df30cf3060e07fe03fc00f0000000000000000000000 +277b:00000f003fc07fe070e0c630cf30cff0c0f0ce30cf30cf30c63070e07fe03fc00f0000000000000000000000 +277c:00000f003fc07fe04020de70fcf0fcf0f9f0f9f0f3f0f3f0e7f067e07fe03fc00f0000000000000000000000 +277d:00000f003fc07fe06060c630cf30cf30e070c630cf30cf30cf3060607fe03fc00f0000000000000000000000 +277e:00000f003fc07fe06060c630cf30cf30c630e030ff30cf30cf3060607fe03fc00f0000000000000000000000 +277f:00000f003fc07fe04c2089908990c990c990c990c990c990c99084207fe03fc00f0000000000000000000000 +2780:00000f0030c0402046208e109e108610861086108610861086104620402030c00f0000000000000000000000 +2781:00000f0030c040204f20919081908190831086108c10981098105fa0402030c00f0000000000000000000000 +2782:00000f0030c040204f20989080d080d08f1080d080d080d098904f20402030c00f0000000000000000000000 +2783:00000f0030c0402041a0831086108c109990b190bfd08190819041a0402030c00f0000000000000000000000 +2784:00000f0030c040205fa09810981098109f9081908190819099904f20402030c00f0000000000000000000000 +2785:00000f0030c040204f20b0d0b0d0b0108f10b0d0b0d0b0d0b0d04f20402030c00f0000000000000000000000 +2786:00000f0030c040205fa0819083108310861086108c108c1098105820402030c00f0000000000000000000000 +2787:00000f0030c040204f20b0d0b0d0b0d08f10b0d0b0d0b0d0b0d04f20402030c00f0000000000000000000000 +2788:00000f0030c040204f20b0d0b0d0b0d0b0d08fd080d080d0b0d04f20402030c00f0000000000000000000000 +2789:00000f0030c040204020b390b6d0b6d0b6d0b6d0b6d0b6d0b3904020402030c00f0000000000000000000000 +278a:00000f003fc07fe079e0e1f0f9f0f9f0f9f0f9f0f9f0f9f0f9f079e07fe03fc00f0000000000000000000000 +278b:00000f003fc07fe070e0cf30ff30fe70fcf0f9f0f3f0e7f0cff040207fe03fc00f0000000000000000000000 +278c:00000f003fc07fe070e0cf30ff30ff30f0f0ff30ff30ff30cf3070e07fe03fc00f0000000000000000000000 +278d:00000f003fc07fe07e60fcf0f9f0f3f0e670ce70c030fe70fe707e607fe03fc00f0000000000000000000000 +278e:00000f003fc07fe04020cff0cff0cff0c0f0ff30ff30ff30ff3040f07fe03fc00f0000000000000000000000 +278f:00000f003fc07fe070e0cf30cf30cff0c0f0cf30cf30cf30cf3070e07fe03fc00f0000000000000000000000 +2790:00000f003fc07fe04060fe70fcf0fcf0f9f0f9f0f3f0f3f0e7f067e07fe03fc00f0000000000000000000000 +2791:00000f003fc07fe070e0cf30cf30cf30f0f0cf30cf30cf30cf3070e07fe03fc00f0000000000000000000000 +2792:00000f003fc07fe070e0cf30cf30cf30cf30f030ff30cf30cf3070e07fe03fc00f0000000000000000000000 +2793:00000f003fc07fe04c2089908990c990c990c990c990c990c9904c207fe03fc00f0000000000000000000000 +2794:000000000000000000001e000f00078003c0ffe0fff0fff0ffe003c007800f001e0000000000000000000000 +2795:000000000000000000000000000000003c00003c00003c00003c0001ff8001ff8001ff8001ff80003c00003c00003c00003c00000000000000000000000000000000 +2796:00000000000000000000000000000000000000000000000000000001ff8001ff8001ff8001ff80000000000000000000000000000000000000000000000000000000 +2797:000000003c00003c00003c00003c0000000000000001ff8001ff8001ff8001ff80000000000000003c00003c00003c00003c00000000000000000000000000000000 +2798:0000000000000000000020007000f8007c003e001f000f9007f003f001f001f003f000000000000000000000 +2799:000000000000000000000000020003000380ffc0ffe0fff0ffe0ffc003800300020000000000000000000000 +279a:0000000000000000000003f001f001f003f007f00f901f003e007c00f8007000200000000000000000000000 +279b:000000000000000000000000000000000c000f0003c0fff003c00f000c000000000000000000000000000000 +279c:0000000000000000000006000f00078003c07fe0fff0fff07fe003c007800f00060000000000000000000000 +279d:00000000000000000000000000000100018001c001e0fff001e001c001800100000000000000000000000000 +279e:00000000000000000000000000000100018001c0ffe0fff0ffe001c001800100000000000000000000000000 +279f:00000000000000000000000000000100018001c0b7e0b7f0b7e001c001800100000000000000000000000000 +27a0:000000000000000000000000020003000380b7c0b7e0b7f0b7e0b7c003800300020000000000000000000000 +27a1:000000000000000000000000000001000180ffc0ffe0fff0ffe0ffc001800100000000000000000000000000 +27a2:000000000000000000000000c000b0004c00230010c00ff01fc03f007c00f000c00000000000000000000000 +27a3:000000000000000000000000c000f0007c003f001fc00ff010c023004c00b000c00000000000000000000000 +27a4:000000000000000000000000c000f0007c003f001fc00ff01fc03f007c00f000c00000000000000000000000 +27a5:00000000000000000000000000008100c180ffc0ffe0fff07fe03fc001800100000000000000000000000000 +27a6:0000000000000000000000000000010001803fc07fe0fff0ffe0ffc0c1808100000000000000000000000000 +27a7:0000000000000000000001800180ffc0ffc0ffe0ffe0fff0ffe0ffe0ffc0ffc0018001800000000000000000 +27a8:00000000000000000000000001000100ff80ff80ffc0fff0ffc0ff80ff800100010000000000000000000000 +27a9:000000000000000000000000000007000780fdc080e0807080e0fdc007800700000000000000000000000000 +27aa:00000000000000000000000000000f000e80fe40e020e010e020fe400e800f00000000000000000000000000 +27ab:0000000000000000000000000000004001c01e20202040108070f1f0f7e0ff803e0038000000000000000000 +27ac:000000000000000000000000000038003e00ff80f7e0f1f08070401020201e2001c000400000000000000000 +27ad:000000000000000000000000000003000280fe40802080108030fe707ee03fc0038003000000000000000000 +27ae:0000000000000000000000000000030003803fc07ee0fe70803080108020fe40028003000000000000000000 +27af:000000000000000000000000000003000280fe40402020104030fe707ee03fc0038003000000000000000000 +27b0:000000000000000000000000ff001f01fcf0003f0000ffc00303f00c00f81c003c38001c38001c3c00381f00300fc0c003ff00000000000000000000000000000000 +27b1:0000000000000000000000000000030003803fc07ee0fe70403020104020fe40028003000000000000000000 +27b2:00000f003fc07de07ce0fc70003000100000000000100030fc707ce07de03fc00f0000000000000000000000 +27b3:00000000000000000000000000000000f080a8c054e02bf054e0a8c0f0800000000000000000000000000000 +27b4:0000000000000000000020003000d8006c0036001b000d10071000b0007000f003f000000000000000000000 +27b5:000000000000000000000000000000005080a8c054e003f054e0a8c050800000000000000000000000000000 +27b6:0000000000000000000003f000f0007000b007100d101b0036006c00d8003000200000000000000000000000 +27b7:0000000000000000000030003800dc00fe007f003f001f100f1000b0007000f003f000000000000000000000 +27b8:00000000000000000000000000000000f080f8c07ce01ff07ce0f8c0f0800000000000000000000000000000 +27b9:0000000000000000000003f000f0007000b00f101f103f007f00fe00dc003800300000000000000000000000 +27ba:000000000000000000000000000000006040f8c0fce0fff0fce0f8c060400000000000000000000000000000 +27bb:00000000000000000000000000006000f040fcc0fce0fff0fce0fcc0f8406000000000000000000000000000 +27bc:0000000000000000000000000000e00078403c601ff01ff03c607840e0000000000000000000000000000000 +27bd:000000000000000000000000e000f8007c403e601ff01ff03e607c40f000e000000000000000000000000000 +27be:000000000000000000001200090004800240ff2000100010ff20024004800900120000000000000000000000 +27bf:000000000000000000000000f03f030ec0ec0700700f80f811c11c20e20e6066066066066066066066067047043883881f01f0000000000000000000000000000000 +27c0:00000000000000000000000080208040808081008200840088009000a000c000ffe000000000000000000000 +27c1:000000000000000004000a000a0011001100248024804a404a409f208020ffe0000000000000000000000000 +27c2:0000000000000000000000000000000006000600060006000600060006007fe07fe000000000000000000000 +27c3:0000000000000000000007e01fe0380060c06120612060c038001fe007e00000000000000000000000000000 +27c4:000000000000000000007e007f8001c0306048604860306001c07f807e000000000000000000000000000000 +27c5:000000001c00660063006300030003000600060006000c000c000c000c000c000c000c000e00070001e00000 +27c6:00000000038006600c600c600c000c00060006000600030003000300030003000300030007000e0078000000 +27c7:00000000000000000000000000006660666030c030c0198019800f000f000600060000000000000000000000 +27c8:00000000000000000000c0f0c3f0c7006c006c006c006c00370033f030f00000000000000000000000000000 +27c9:00000000000000000000f030fc300e3003600360036003600ec0fcc0f0c00000000000000000000000000000 +27ca:0000000000000600060006000600060006003fc0060006000600060006000600060000000000000000000000 +27cb:000000000000000000100030006000c00180030006000c00180030006000c000800000000000000000000000 +27cc:00003ff03ff018001c000c000e00060006000600060006000e000c001c001800300000000000000000000000 +27cd:00000000000000008000c0006000300018000c0006000300018000c000600030001000000000000000000000 +27ce:000000000000000000000000fff0861086108f108f1099909990b0d0b0d0e070e070fff00000000000000000 +27cf:000000000000000000000000fff0e070e070b0d0b0d0999099908f108f1086108610fff00000000000000000 +27d0:0000000000000000000006000900108020404020861086104020204010800900060000000000000000000000 +27d1:0000000000000000000000000000060006000f000f001980198030c030c06660666000000000000000000000 +27d2:000000000000000000000000000000006660666066606660666036c03fc00f00000000000000000000000000 +27d3:000000000000000000000030003000300030003000300330033000300030fff0fff000000000000000000000 +27d4:00000000000000000000fff0fff0c000c000cc00cc00c000c000c000c000c000c00000000000000000000000 +27d5:0000000000000000000000000000e01030302850249023102310249028503030e01000000000000000000000 +27d6:00000000000000000000000000008070c0c0a14092408c408c409240a140c0c0807000000000000000000000 +27d7:0000000000000000000000000000e070204030c0294026402640294030c02040e07000000000000000000000 +27d8:0000000000000600060006000600060006000600060006000600060006000600060006007fe07fe000000000 +27d9:0000000000007fe07fe006000600060006000600060006000600060006000600060006000600060000000000 +27da:00000000000000000000000019801980f9f0f9f019801980f9f0f9f019801980000000000000000000000000 +27db:0000000000000000000000001980198019801980f9f0f9f01980198019801980000000000000000000000000 +27dc:0000000000000000000000000000200050008fe08fe050002000000000000000000000000000000000000000 +27dd:000000000000000000000000c000c000c000fff0fff0c000c000c00000000000000000000000000000000000 +27de:000000000000000000000000003000300030fff0fff000300030003000000000000000000000000000000000 +27df:000000000f0010801080108010800f000600060006000600060006000600fff0fff000000000000000000000 +27e0:0600060009000900108010802040204040204020fff0fff04020402020402040108010800900090006000600 +27e1:00000000000000000000000004000a000a00110060c0802060c011000a000a00040000000000000000000000 +27e2:00000000000000000000000002000500050008803060e0103060088005000500020000000000000000000000 +27e3:00000000000000000000000004000a000a00110060c0807060c011000a000a00040000000000000000000000 +27e4:00000000000000000000000000000ff008100810f810f810081008100ff00000000000000000000000000000 +27e5:0000000000000000000000000000ff008100810081f081f081008100ff000000000000000000000000000000 +27e6:000000003fc03fc0330033003300330033003300330033003300330033003300330033003fc03fc000000000 +27e7:000000003fc03fc00cc00cc00cc00cc00cc00cc00cc00cc00cc00cc00cc00cc00cc00cc03fc03fc000000000 +27e8:000000000180018003000300060006000c000c00180018000c000c0006000600030003000180018000000000 +27e9:00000000180018000c000c0006000600030003000180018003000300060006000c000c001800180000000000 +27ea:00000000066006600cc00cc019801980330033006600660033003300198019800cc00cc00660066000000000 +27eb:000000006600660033003300198019800cc00cc0066006600cc00cc019801980330033006600660000000000 +27ec:0000000001000300050009000900090009000900090009000900090009000900090005000300010000000000 +27ed:0000000008000c000a000900090009000900090009000900090009000900090009000a000c00080000000000 +27ee:000000000200040004000c000c000c000c000c000c000c000c000c000c000c000c0004000400020000000000 +27ef:0000000008000400040006000600060006000600060006000600060006000600060004000400080000000000 +27f0:000006000900198029404920c930492049204920492049204920492049204920492000000000000000000000 +27f1:00004920492049204920492049204920492049204920c9304920294019800900060000000000000000000000 +27f2:000000000000000003800fe00c6018309930db307e303c30003018300c600fe0038000000000000000000000 +27f3:00000000000000001c007f006300c180c990cdb0c7e0c3c0c000c18063007f001c0000000000000000000000 +27f4:0000000000000000000000003800d68092409220fff092209240d68038000000000000000000000000000000 +27f5:000000000000000000000000180030006000fff0fff060003000180000000000000000000000000000000000 +27f6:000000000000000000000000018000c00060fff0fff0006000c0018000000000000000000000000000000000 +27f7:000000000000000000000000198030c06060fff0fff0606030c0198000000000000000000000000000000000 +27f8:00000000000000000000300030006ff06ff0c000c0006ff06ff0300030000000000000000000000000000000 +27f9:0000000000000000000000c000c0ff60ff6000300030ff60ff6000c000c00000000000000000000000000000 +27fa:0000000000000000000030c030c06f606f60c030c0306f606f6030c030c00000000000000000000000000000 +27fb:000000000000000000000000183030306030fff0fff060303030183000000000000000000000000000000000 +27fc:000000000000000000000000c180c0c0c060fff0fff0c060c0c0c18000000000000000000000000000000000 +27fd:00000000000000000000303030306ff06ff0c030c0306ff06ff0303030300000000000000000000000000000 +27fe:00000000000000000000c0c0c0c0ff60ff60c030c030ff60ff60c0c0c0c00000000000000000000000000000 +27ff:000000000000000000000000018000c0106028b04530826000c0018000000000000000000000000000000000 +2800:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2801:0000000000003800380038000000000000000000000000000000000000000000000000000000000000000000 +2802:0000000000000000000000000000000038003800380000000000000000000000000000000000000000000000 +2803:0000000000003800380038000000000038003800380000000000000000000000000000000000000000000000 +2804:0000000000000000000000000000000000000000000000000000380038003800000000000000000000000000 +2805:0000000000003800380038000000000038003800380000000000000000000000000000000000000000000000 +2806:0000000000003800380038000000000000000000000000000000380038003800000000000000000000000000 +2807:0000000000003800380038000000000038003800380000000000380038003800000000000000000000000000 +2808:00000000000001c001c001c00000000000000000000000000000000000000000000000000000000000000000 +2809:00000000000039c039c039c00000000000000000000000000000000000000000000000000000000000000000 +280a:00000000000001c001c001c00000000038003800380000000000000000000000000000000000000000000000 +280b:00000000000039c039c039c00000000038003800380000000000000000000000000000000000000000000000 +280c:00000000000001c001c001c00000000000000000000000000000380038003800000000000000000000000000 +280d:00000000000039c039c039c00000000000000000000000000000380038003800000000000000000000000000 +280e:00000000000001c001c001c00000000038003800380000000000380038003800000000000000000000000000 +280f:00000000000039c039c039c00000000038003800380000000000380038003800000000000000000000000000 +2810:0000000000000000000000000000000001c001c001c000000000000000000000000000000000000000000000 +2811:0000000000003800380038000000000001c001c001c000000000000000000000000000000000000000000000 +2812:0000000000000000000000000000000039c039c039c000000000000000000000000000000000000000000000 +2813:0000000000003800380038000000000039c039c039c000000000000000000000000000000000000000000000 +2814:0000000000000000000000000000000001c001c001c000000000380038003800000000000000000000000000 +2815:0000000000003800380038000000000001c001c001c000000000380038003800000000000000000000000000 +2816:0000000000000000000000000000000039c039c039c000000000380038003800000000000000000000000000 +2817:0000000000003800380038000000000039c039c039c000000000380038003800000000000000000000000000 +2818:00000000000001c001c001c00000000001c001c001c000000000000000000000000000000000000000000000 +2819:00000000000039c039c039c00000000001c001c001c000000000000000000000000000000000000000000000 +281a:00000000000001c001c001c00000000039c039c039c000000000000000000000000000000000000000000000 +281b:00000000000039c039c039c00000000039c039c039c000000000000000000000000000000000000000000000 +281c:00000000000001c001c001c00000000001c001c001c000000000380038003800000000000000000000000000 +281d:00000000000039c039c039c00000000001c001c001c000000000380038003800000000000000000000000000 +281e:00000000000001c001c001c00000000039c039c039c000000000380038003800000000000000000000000000 +281f:00000000000039c039c039c00000000039c039c039c000000000380038003800000000000000000000000000 +2820:000000000000000000000000000000000000000000000000000001c001c001c0000000000000000000000000 +2821:000000000000380038003800000000000000000000000000000001c001c001c0000000000000000000000000 +2822:000000000000000000000000000000003800380038000000000001c001c001c0000000000000000000000000 +2823:000000000000380038003800000000003800380038000000000001c001c001c0000000000000000000000000 +2824:000000000000000000000000000000000000000000000000000039c039c039c0000000000000000000000000 +2825:000000000000380038003800000000000000000000000000000039c039c039c0000000000000000000000000 +2826:000000000000000000000000000000003800380038000000000039c039c039c0000000000000000000000000 +2827:000000000000380038003800000000003800380038000000000039c039c039c0000000000000000000000000 +2828:00000000000001c001c001c0000000000000000000000000000001c001c001c0000000000000000000000000 +2829:00000000000039c039c039c0000000000000000000000000000001c001c001c0000000000000000000000000 +282a:00000000000001c001c001c0000000003800380038000000000001c001c001c0000000000000000000000000 +282b:00000000000039c039c039c0000000003800380038000000000001c001c001c0000000000000000000000000 +282c:00000000000001c001c001c0000000000000000000000000000039c039c039c0000000000000000000000000 +282d:00000000000039c039c039c0000000000000000000000000000039c039c039c0000000000000000000000000 +282e:00000000000001c001c001c0000000003800380038000000000039c039c039c0000000000000000000000000 +282f:00000000000039c039c039c0000000003800380038000000000039c039c039c0000000000000000000000000 +2830:0000000000000000000000000000000001c001c001c00000000001c001c001c0000000000000000000000000 +2831:0000000000003800380038000000000001c001c001c00000000001c001c001c0000000000000000000000000 +2832:0000000000000000000000000000000039c039c039c00000000001c001c001c0000000000000000000000000 +2833:0000000000003800380038000000000039c039c039c00000000001c001c001c0000000000000000000000000 +2834:0000000000000000000000000000000001c001c001c00000000039c039c039c0000000000000000000000000 +2835:0000000000003800380038000000000001c001c001c00000000039c039c039c0000000000000000000000000 +2836:0000000000000000000000000000000039c039c039c00000000039c039c039c0000000000000000000000000 +2837:0000000000003800380038000000000039c039c039c00000000039c039c039c0000000000000000000000000 +2838:00000000000001c001c001c00000000001c001c001c00000000001c001c001c0000000000000000000000000 +2839:00000000000039c039c039c00000000001c001c001c00000000001c001c001c0000000000000000000000000 +283a:00000000000001c001c001c00000000039c039c039c00000000001c001c001c0000000000000000000000000 +283b:00000000000039c039c039c00000000039c039c039c00000000001c001c001c0000000000000000000000000 +283c:00000000000001c001c001c00000000001c001c001c00000000039c039c039c0000000000000000000000000 +283d:00000000000039c039c039c00000000001c001c001c00000000039c039c039c0000000000000000000000000 +283e:00000000000001c001c001c00000000039c039c039c00000000039c039c039c0000000000000000000000000 +283f:00000000000039c039c039c00000000039c039c039c00000000039c039c039c0000000000000000000000000 +2840:0000000000000000000000000000000000000000000000000000000000000000000000003800380038000000 +2841:0000000000003800380038000000000000000000000000000000000000000000000000003800380038000000 +2842:0000000000000000000000000000000038003800380000000000000000000000000000003800380038000000 +2843:0000000000003800380038000000000038003800380000000000000000000000000000003800380038000000 +2844:0000000000000000000000000000000000000000000000000000380038003800000000003800380038000000 +2845:0000000000003800380038000000000038003800380000000000000000000000000000003800380038000000 +2846:0000000000003800380038000000000000000000000000000000380038003800000000003800380038000000 +2847:0000000000003800380038000000000038003800380000000000380038003800000000003800380038000000 +2848:00000000000001c001c001c00000000000000000000000000000000000000000000000003800380038000000 +2849:00000000000039c039c039c00000000000000000000000000000000000000000000000003800380038000000 +284a:00000000000001c001c001c00000000038003800380000000000000000000000000000003800380038000000 +284b:00000000000039c039c039c00000000038003800380000000000000000000000000000003800380038000000 +284c:00000000000001c001c001c00000000000000000000000000000380038003800000000003800380038000000 +284d:00000000000039c039c039c00000000000000000000000000000380038003800000000003800380038000000 +284e:00000000000001c001c001c00000000038003800380000000000380038003800000000003800380038000000 +284f:00000000000039c039c039c00000000038003800380000000000380038003800000000003800380038000000 +2850:0000000000000000000000000000000001c001c001c000000000000000000000000000003800380038000000 +2851:0000000000003800380038000000000001c001c001c000000000000000000000000000003800380038000000 +2852:0000000000000000000000000000000039c039c039c000000000000000000000000000003800380038000000 +2853:0000000000003800380038000000000039c039c039c000000000000000000000000000003800380038000000 +2854:0000000000000000000000000000000001c001c001c000000000380038003800000000003800380038000000 +2855:0000000000003800380038000000000001c001c001c000000000380038003800000000003800380038000000 +2856:0000000000000000000000000000000039c039c039c000000000380038003800000000003800380038000000 +2857:0000000000003800380038000000000039c039c039c000000000380038003800000000003800380038000000 +2858:00000000000001c001c001c00000000001c001c001c000000000000000000000000000003800380038000000 +2859:00000000000039c039c039c00000000001c001c001c000000000000000000000000000003800380038000000 +285a:00000000000001c001c001c00000000039c039c039c000000000000000000000000000003800380038000000 +285b:00000000000039c039c039c00000000039c039c039c000000000000000000000000000003800380038000000 +285c:00000000000001c001c001c00000000001c001c001c000000000380038003800000000003800380038000000 +285d:00000000000039c039c039c00000000001c001c001c000000000380038003800000000003800380038000000 +285e:00000000000001c001c001c00000000039c039c039c000000000380038003800000000003800380038000000 +285f:00000000000039c039c039c00000000039c039c039c000000000380038003800000000003800380038000000 +2860:000000000000000000000000000000000000000000000000000001c001c001c0000000003800380038000000 +2861:000000000000380038003800000000000000000000000000000001c001c001c0000000003800380038000000 +2862:000000000000000000000000000000003800380038000000000001c001c001c0000000003800380038000000 +2863:000000000000380038003800000000003800380038000000000001c001c001c0000000003800380038000000 +2864:000000000000000000000000000000000000000000000000000039c039c039c0000000003800380038000000 +2865:000000000000380038003800000000000000000000000000000039c039c039c0000000003800380038000000 +2866:000000000000000000000000000000003800380038000000000039c039c039c0000000003800380038000000 +2867:000000000000380038003800000000003800380038000000000039c039c039c0000000003800380038000000 +2868:00000000000001c001c001c0000000000000000000000000000001c001c001c0000000003800380038000000 +2869:00000000000039c039c039c0000000000000000000000000000001c001c001c0000000003800380038000000 +286a:00000000000001c001c001c0000000003800380038000000000001c001c001c0000000003800380038000000 +286b:00000000000039c039c039c0000000003800380038000000000001c001c001c0000000003800380038000000 +286c:00000000000001c001c001c0000000000000000000000000000039c039c039c0000000003800380038000000 +286d:00000000000039c039c039c0000000000000000000000000000039c039c039c0000000003800380038000000 +286e:00000000000001c001c001c0000000003800380038000000000039c039c039c0000000003800380038000000 +286f:00000000000039c039c039c0000000003800380038000000000039c039c039c0000000003800380038000000 +2870:0000000000000000000000000000000001c001c001c00000000001c001c001c0000000003800380038000000 +2871:0000000000003800380038000000000001c001c001c00000000001c001c001c0000000003800380038000000 +2872:0000000000000000000000000000000039c039c039c00000000001c001c001c0000000003800380038000000 +2873:0000000000003800380038000000000039c039c039c00000000001c001c001c0000000003800380038000000 +2874:0000000000000000000000000000000001c001c001c00000000039c039c039c0000000003800380038000000 +2875:0000000000003800380038000000000001c001c001c00000000039c039c039c0000000003800380038000000 +2876:0000000000000000000000000000000039c039c039c00000000039c039c039c0000000003800380038000000 +2877:0000000000003800380038000000000039c039c039c00000000039c039c039c0000000003800380038000000 +2878:00000000000001c001c001c00000000001c001c001c00000000001c001c001c0000000003800380038000000 +2879:00000000000039c039c039c00000000001c001c001c00000000001c001c001c0000000003800380038000000 +287a:00000000000001c001c001c00000000039c039c039c00000000001c001c001c0000000003800380038000000 +287b:00000000000039c039c039c00000000039c039c039c00000000001c001c001c0000000003800380038000000 +287c:00000000000001c001c001c00000000001c001c001c00000000039c039c039c0000000003800380038000000 +287d:00000000000039c039c039c00000000001c001c001c00000000039c039c039c0000000003800380038000000 +287e:00000000000001c001c001c00000000039c039c039c00000000039c039c039c0000000003800380038000000 +287f:00000000000039c039c039c00000000039c039c039c00000000039c039c039c0000000003800380038000000 +2880:00000000000000000000000000000000000000000000000000000000000000000000000001c001c001c00000 +2881:00000000000038003800380000000000000000000000000000000000000000000000000001c001c001c00000 +2882:00000000000000000000000000000000380038003800000000000000000000000000000001c001c001c00000 +2883:00000000000038003800380000000000380038003800000000000000000000000000000001c001c001c00000 +2884:00000000000000000000000000000000000000000000000000003800380038000000000001c001c001c00000 +2885:00000000000038003800380000000000380038003800000000000000000000000000000001c001c001c00000 +2886:00000000000038003800380000000000000000000000000000003800380038000000000001c001c001c00000 +2887:00000000000038003800380000000000380038003800000000003800380038000000000001c001c001c00000 +2888:00000000000001c001c001c000000000000000000000000000000000000000000000000001c001c001c00000 +2889:00000000000039c039c039c000000000000000000000000000000000000000000000000001c001c001c00000 +288a:00000000000001c001c001c000000000380038003800000000000000000000000000000001c001c001c00000 +288b:00000000000039c039c039c000000000380038003800000000000000000000000000000001c001c001c00000 +288c:00000000000001c001c001c000000000000000000000000000003800380038000000000001c001c001c00000 +288d:00000000000039c039c039c000000000000000000000000000003800380038000000000001c001c001c00000 +288e:00000000000001c001c001c000000000380038003800000000003800380038000000000001c001c001c00000 +288f:00000000000039c039c039c000000000380038003800000000003800380038000000000001c001c001c00000 +2890:0000000000000000000000000000000001c001c001c0000000000000000000000000000001c001c001c00000 +2891:0000000000003800380038000000000001c001c001c0000000000000000000000000000001c001c001c00000 +2892:0000000000000000000000000000000039c039c039c0000000000000000000000000000001c001c001c00000 +2893:0000000000003800380038000000000039c039c039c0000000000000000000000000000001c001c001c00000 +2894:0000000000000000000000000000000001c001c001c0000000003800380038000000000001c001c001c00000 +2895:0000000000003800380038000000000001c001c001c0000000003800380038000000000001c001c001c00000 +2896:0000000000000000000000000000000039c039c039c0000000003800380038000000000001c001c001c00000 +2897:0000000000003800380038000000000039c039c039c0000000003800380038000000000001c001c001c00000 +2898:00000000000001c001c001c00000000001c001c001c0000000000000000000000000000001c001c001c00000 +2899:00000000000039c039c039c00000000001c001c001c0000000000000000000000000000001c001c001c00000 +289a:00000000000001c001c001c00000000039c039c039c0000000000000000000000000000001c001c001c00000 +289b:00000000000039c039c039c00000000039c039c039c0000000000000000000000000000001c001c001c00000 +289c:00000000000001c001c001c00000000001c001c001c0000000003800380038000000000001c001c001c00000 +289d:00000000000039c039c039c00000000001c001c001c0000000003800380038000000000001c001c001c00000 +289e:00000000000001c001c001c00000000039c039c039c0000000003800380038000000000001c001c001c00000 +289f:00000000000039c039c039c00000000039c039c039c0000000003800380038000000000001c001c001c00000 +28a0:000000000000000000000000000000000000000000000000000001c001c001c00000000001c001c001c00000 +28a1:000000000000380038003800000000000000000000000000000001c001c001c00000000001c001c001c00000 +28a2:000000000000000000000000000000003800380038000000000001c001c001c00000000001c001c001c00000 +28a3:000000000000380038003800000000003800380038000000000001c001c001c00000000001c001c001c00000 +28a4:000000000000000000000000000000000000000000000000000039c039c039c00000000001c001c001c00000 +28a5:000000000000380038003800000000000000000000000000000039c039c039c00000000001c001c001c00000 +28a6:000000000000000000000000000000003800380038000000000039c039c039c00000000001c001c001c00000 +28a7:000000000000380038003800000000003800380038000000000039c039c039c00000000001c001c001c00000 +28a8:00000000000001c001c001c0000000000000000000000000000001c001c001c00000000001c001c001c00000 +28a9:00000000000039c039c039c0000000000000000000000000000001c001c001c00000000001c001c001c00000 +28aa:00000000000001c001c001c0000000003800380038000000000001c001c001c00000000001c001c001c00000 +28ab:00000000000039c039c039c0000000003800380038000000000001c001c001c00000000001c001c001c00000 +28ac:00000000000001c001c001c0000000000000000000000000000039c039c039c00000000001c001c001c00000 +28ad:00000000000039c039c039c0000000000000000000000000000039c039c039c00000000001c001c001c00000 +28ae:00000000000001c001c001c0000000003800380038000000000039c039c039c00000000001c001c001c00000 +28af:00000000000039c039c039c0000000003800380038000000000039c039c039c00000000001c001c001c00000 +28b0:0000000000000000000000000000000001c001c001c00000000001c001c001c00000000001c001c001c00000 +28b1:0000000000003800380038000000000001c001c001c00000000001c001c001c00000000001c001c001c00000 +28b2:0000000000000000000000000000000039c039c039c00000000001c001c001c00000000001c001c001c00000 +28b3:0000000000003800380038000000000039c039c039c00000000001c001c001c00000000001c001c001c00000 +28b4:0000000000000000000000000000000001c001c001c00000000039c039c039c00000000001c001c001c00000 +28b5:0000000000003800380038000000000001c001c001c00000000039c039c039c00000000001c001c001c00000 +28b6:0000000000000000000000000000000039c039c039c00000000039c039c039c00000000001c001c001c00000 +28b7:0000000000003800380038000000000039c039c039c00000000039c039c039c00000000001c001c001c00000 +28b8:00000000000001c001c001c00000000001c001c001c00000000001c001c001c00000000001c001c001c00000 +28b9:00000000000039c039c039c00000000001c001c001c00000000001c001c001c00000000001c001c001c00000 +28ba:00000000000001c001c001c00000000039c039c039c00000000001c001c001c00000000001c001c001c00000 +28bb:00000000000039c039c039c00000000039c039c039c00000000001c001c001c00000000001c001c001c00000 +28bc:00000000000001c001c001c00000000001c001c001c00000000039c039c039c00000000001c001c001c00000 +28bd:00000000000039c039c039c00000000001c001c001c00000000039c039c039c00000000001c001c001c00000 +28be:00000000000001c001c001c00000000039c039c039c00000000039c039c039c00000000001c001c001c00000 +28bf:00000000000039c039c039c00000000039c039c039c00000000039c039c039c00000000001c001c001c00000 +28c0:00000000000000000000000000000000000000000000000000000000000000000000000039c039c039c00000 +28c1:00000000000038003800380000000000000000000000000000000000000000000000000039c039c039c00000 +28c2:00000000000000000000000000000000380038003800000000000000000000000000000039c039c039c00000 +28c3:00000000000038003800380000000000380038003800000000000000000000000000000039c039c039c00000 +28c4:00000000000000000000000000000000000000000000000000003800380038000000000039c039c039c00000 +28c5:00000000000038003800380000000000380038003800000000000000000000000000000039c039c039c00000 +28c6:00000000000038003800380000000000000000000000000000003800380038000000000039c039c039c00000 +28c7:00000000000038003800380000000000380038003800000000003800380038000000000039c039c039c00000 +28c8:00000000000001c001c001c000000000000000000000000000000000000000000000000039c039c039c00000 +28c9:00000000000039c039c039c000000000000000000000000000000000000000000000000039c039c039c00000 +28ca:00000000000001c001c001c000000000380038003800000000000000000000000000000039c039c039c00000 +28cb:00000000000039c039c039c000000000380038003800000000000000000000000000000039c039c039c00000 +28cc:00000000000001c001c001c000000000000000000000000000003800380038000000000039c039c039c00000 +28cd:00000000000039c039c039c000000000000000000000000000003800380038000000000039c039c039c00000 +28ce:00000000000001c001c001c000000000380038003800000000003800380038000000000039c039c039c00000 +28cf:00000000000039c039c039c000000000380038003800000000003800380038000000000039c039c039c00000 +28d0:0000000000000000000000000000000001c001c001c0000000000000000000000000000039c039c039c00000 +28d1:0000000000003800380038000000000001c001c001c0000000000000000000000000000039c039c039c00000 +28d2:0000000000000000000000000000000039c039c039c0000000000000000000000000000039c039c039c00000 +28d3:0000000000003800380038000000000039c039c039c0000000000000000000000000000039c039c039c00000 +28d4:0000000000000000000000000000000001c001c001c0000000003800380038000000000039c039c039c00000 +28d5:0000000000003800380038000000000001c001c001c0000000003800380038000000000039c039c039c00000 +28d6:0000000000000000000000000000000039c039c039c0000000003800380038000000000039c039c039c00000 +28d7:0000000000003800380038000000000039c039c039c0000000003800380038000000000039c039c039c00000 +28d8:00000000000001c001c001c00000000001c001c001c0000000000000000000000000000039c039c039c00000 +28d9:00000000000039c039c039c00000000001c001c001c0000000000000000000000000000039c039c039c00000 +28da:00000000000001c001c001c00000000039c039c039c0000000000000000000000000000039c039c039c00000 +28db:00000000000039c039c039c00000000039c039c039c0000000000000000000000000000039c039c039c00000 +28dc:00000000000001c001c001c00000000001c001c001c0000000003800380038000000000039c039c039c00000 +28dd:00000000000039c039c039c00000000001c001c001c0000000003800380038000000000039c039c039c00000 +28de:00000000000001c001c001c00000000039c039c039c0000000003800380038000000000039c039c039c00000 +28df:00000000000039c039c039c00000000039c039c039c0000000003800380038000000000039c039c039c00000 +28e0:000000000000000000000000000000000000000000000000000001c001c001c00000000039c039c039c00000 +28e1:000000000000380038003800000000000000000000000000000001c001c001c00000000039c039c039c00000 +28e2:000000000000000000000000000000003800380038000000000001c001c001c00000000039c039c039c00000 +28e3:000000000000380038003800000000003800380038000000000001c001c001c00000000039c039c039c00000 +28e4:000000000000000000000000000000000000000000000000000039c039c039c00000000039c039c039c00000 +28e5:000000000000380038003800000000000000000000000000000039c039c039c00000000039c039c039c00000 +28e6:000000000000000000000000000000003800380038000000000039c039c039c00000000039c039c039c00000 +28e7:000000000000380038003800000000003800380038000000000039c039c039c00000000039c039c039c00000 +28e8:00000000000001c001c001c0000000000000000000000000000001c001c001c00000000039c039c039c00000 +28e9:00000000000039c039c039c0000000000000000000000000000001c001c001c00000000039c039c039c00000 +28ea:00000000000001c001c001c0000000003800380038000000000001c001c001c00000000039c039c039c00000 +28eb:00000000000039c039c039c0000000003800380038000000000001c001c001c00000000039c039c039c00000 +28ec:00000000000001c001c001c0000000000000000000000000000039c039c039c00000000039c039c039c00000 +28ed:00000000000039c039c039c0000000000000000000000000000039c039c039c00000000039c039c039c00000 +28ee:00000000000001c001c001c0000000003800380038000000000039c039c039c00000000039c039c039c00000 +28ef:00000000000039c039c039c0000000003800380038000000000039c039c039c00000000039c039c039c00000 +28f0:0000000000000000000000000000000001c001c001c00000000001c001c001c00000000039c039c039c00000 +28f1:0000000000003800380038000000000001c001c001c00000000001c001c001c00000000039c039c039c00000 +28f2:0000000000000000000000000000000039c039c039c00000000001c001c001c00000000039c039c039c00000 +28f3:0000000000003800380038000000000039c039c039c00000000001c001c001c00000000039c039c039c00000 +28f4:0000000000000000000000000000000001c001c001c00000000039c039c039c00000000039c039c039c00000 +28f5:0000000000003800380038000000000001c001c001c00000000039c039c039c00000000039c039c039c00000 +28f6:0000000000000000000000000000000039c039c039c00000000039c039c039c00000000039c039c039c00000 +28f7:0000000000003800380038000000000039c039c039c00000000039c039c039c00000000039c039c039c00000 +28f8:00000000000001c001c001c00000000001c001c001c00000000001c001c001c00000000039c039c039c00000 +28f9:00000000000039c039c039c00000000001c001c001c00000000001c001c001c00000000039c039c039c00000 +28fa:00000000000001c001c001c00000000039c039c039c00000000001c001c001c00000000039c039c039c00000 +28fb:00000000000039c039c039c00000000039c039c039c00000000001c001c001c00000000039c039c039c00000 +28fc:00000000000001c001c001c00000000001c001c001c00000000039c039c039c00000000039c039c039c00000 +28fd:00000000000039c039c039c00000000001c001c001c00000000039c039c039c00000000039c039c039c00000 +28fe:00000000000001c001c001c00000000039c039c039c00000000039c039c039c00000000039c039c039c00000 +28ff:00000000000039c039c039c00000000039c039c039c00000000039c039c039c00000000039c039c039c00000 +2900:0000000000000000000000000000248022402120fff0fff02120224024800000000000000000000000000000 +2901:0000000000000000000000000000548052405120fff0fff05120524054800000000000000000000000000000 +2902:00000000000000000000318031806ff06ff0c180c1806ff06ff0318031800000000000000000000000000000 +2903:0000000000000000000018c018c0ff60ff6018301830ff60ff6018c018c00000000000000000000000000000 +2904:00000000000000000000264026407fe07fe0c630c6307fe07fe0264026400000000000000000000000000000 +2905:0000000000000000000000000000c480c240c120fff0fff0c120c240c4800000000000000000000000000000 +2906:00000000000000000000303030306ff06ff0c030c0306ff06ff0303030300000000000000000000000000000 +2907:00000000000000000000c0c0c0c0ff60ff60c030c030ff60ff60c0c0c0c00000000000000000000000000000 +2908:0000000006000600060006007fe07fe00600060006000600666036c01f800f00060000000000000000000000 +2909:0000000006000f001f8036c0666006000600060006007fe07fe0060006000600060000000000000000000000 +290a:0000000006000f001f8036c06660e67036c036c036c036c036c036c036c036c036c000000000000000000000 +290b:0000000036c036c036c036c036c036c036c036c036c0e670666036c01f800f00060000000000000000000000 +290c:000000000000000000000000180030006000f9f0f9f060003000180000000000000000000000000000000000 +290d:000000000000000000000000018000c00060f9f0f9f0006000c0018000000000000000000000000000000000 +290e:000000000000000000000000180030006000f770f77060003000180000000000000000000000000000000000 +290f:000000000000000000000000018000c00060eef0eef0006000c0018000000000000000000000000000000000 +2910:0000000000000000000000000000048002400120db70db700120024004800000000000000000000000000000 +2911:000000000000000000000000018000c00060aab0aab0006000c0018000000000000000000000000000000000 +2912:00000000fff0fff006000f001f8036c066600600060006000600060006000600060000000000000000000000 +2913:0000000006000600060006000600060006000600666036c01f800f000600fff0fff000000000000000000000 +2914:00000000000000000000000000008480444024201ff01ff02420444084800000000000000000000000000000 +2915:00000000000000000000000000008a804a402a201ff01ff02a204a408a800000000000000000000000000000 +2916:00000000000000000000000000008480424021201ff01ff02120424084800000000000000000000000000000 +2917:00000000000000000000000000008a80494028a01ff01ff028a049408a800000000000000000000000000000 +2918:0000000000000000000000000000954054a034503ff03ff0345054a095400000000000000000000000000000 +2919:0000000000000000000000000030006000c0ff80ff8000c00060003000000000000000000000000000000000 +291a:000000000000000000000000c000600030001ff01ff030006000c00000000000000000000000000000000000 +291b:000000000000000000000000009001200240ff80ff8002400120009000000000000000000000000000000000 +291c:0000000000000000000000009000480024001ff01ff024004800900000000000000000000000000000000000 +291d:000000000000000000000000018003004600eff0eff046000300018000000000000000000000000000000000 +291e:00000000000000000000000018000c000620ff70ff7006200c00180000000000000000000000000000000000 +291f:000000000000000000000000019003104610eff0eff046100310019000000000000000000000000000000000 +2920:00000000000000000000000098008c008620ff70ff7086208c00980000000000000000000000000000000000 +2921:000000000000000000000000fc00fc00f000d800cc00c630033001b000f003f003f000000000000000000000 +2922:00000000000000000000000003f003f000f001b00330c630cc00d800f000fc00fc0000000000000000000000 +2923:000000000000000000000000fc00fc00f000d800cc00c600030001800cc007c0038000000000000000000000 +2924:00000000000000000000000007e007e001e0036006600c601800300066007c00380000000000000000000000 +2925:00000000000000000000000038007c006600300018000c600660036001e007e007e000000000000000000000 +2926:00000000000000000000000001c003e0066000c00180630066006c0078007e007e0000000000000000000000 +2927:000000000000000000000000f9f0e070f0f0d9b0cf3006000f00198030c06060c03000000000000000000000 +2928:000000000000000001f00070c0f061b033301e300c001e00333061b0c0f0007001f000000000000000000000 +2929:000000000000000000000000c030606030c019800f000600cf30d9b0f0f0e070f9f000000000000000000000 +292a:0000000000000000f800e000f030d860ccc0c78003000780ccc0d860f030e000f80000000000000000000000 +292b:000000000000000000000000c030606030c01980030006000c00198030c06060c03000000000000000000000 +292c:000000000000000000000000c030606030c019800c0006000300198030c06060c03000000000000000000000 +292d:000000000000000001f00070c0f061b0333018300c000600333061b0c0f0007001f000000000000000000000 +292e:000000000000000001f00070c0f061b0333006300c001800333061b0c0f0007001f000000000000000000000 +292f:0000000000000000000001f00070c0f061b0333018300c00060033006180c0c0006000000000000000000000 +2930:000000000000000000000060c0c06180330006000c001830333061b0c0f0007001f000000000000000000000 +2931:000000000000000000000000f9f0e070f0f0d9b0c33006000c00198030c06060c03000000000000000000000 +2932:000000000000000000000000f9f0e070f0f0d9b0cc3006000300198030c06060c03000000000000000000000 +2933:00000000000000000000000001801cc03660e3f0c1f0006000c0018000000000000000000000000000000000 +2934:000000000000030007800fc01b6033300300030003000300030003000600fe00f80000000000000000000000 +2935:000000000000f800fe00060003000300030003000300030033301b600fc00780030000000000000000000000 +2936:000000000000000000300030003000300030183030306060ffe0ff8060003000180000000000000000000000 +2937:0000000000000000c000c000c000c000c000c180c0c060607ff01ff0006000c0018000000000000000000000 +2938:0000000000000300018000c000c000600060006000600060186018c019801e001f8000000000000000000000 +2939:0000000000000c001800300030006000600060006000600061803180198007801f8000000000000000000000 +293a:00000000000000000000000007c00fe04c70783078307c307e00000000000000000000000000000000000000 +293b:00000000000000000000000003f061f060f060f071903f801f00000000000000000000000000000000000000 +293c:0000000000000000000000003e007f00e320c1e0c1e0c3e007e0000000001f801f8000000000000000000000 +293d:0000000000003e007f00e320c1e0c1e0c3e007e00000060006001f801f800600060000000000000000000000 +293e:0000000000000000000000000000018000c000c0fc60f860f060f06098e01fc00f8000000000000000000000 +293f:000000000000000000000000000018003000300063f061f060f060f071903f801f0000000000000000000000 +2940:00000000000000001c007f006300c180c180c3c0c7e0cdb0c990c18063007f001c0000000000000000000000 +2941:000000000000000003800fe00c60183018303c307e30db30993018300c600fe0038000000000000000000000 +2942:000000000000018000c00060fff0fff0006000c0198030006000fe00fe006000300018000000000000000000 +2943:000000000000180030006000fff0fff060003000198000c0006007f007f0006000c001800000000000000000 +2944:000000000000018000c0006007f007f0006000c0198030006000fff0fff06000300018000000000000000000 +2945:00000000000000000000018000c00060fff0fff0006030c03180fc00fc003000300000000000000000000000 +2946:00000000000000000000180030006000fff0fff0600030c018c003f003f000c000c000000000000000000000 +2947:00000000000000000000000000000000858048c03060fff0fff0306048c08580000000000000000000000000 +2948:0000000000000000000000000000000020804e409120fff0fff091204e402080000000000000000000000000 +2949:000006000f001f8036c066600f001f8036c06660060006000f001f8030c030c030c01f800f00000000000000 +294a:000000000000000000000000000000000c00180030007fe0ffc0018003000600000000000000000000000000 +294b:00000000000000000000000000000000060003000180ffc07fe0300018000c00000000000000000000000000 +294c:00000000040006000700078006c00660060006000600660036001e000e000600020000000000000000000000 +294d:00000000020006000e001e0036006600060006000600066006c0078007000600040000000000000000000000 +294e:00000000000000000000000000000000198030c06060fff0fff0000000000000000000000000000000000000 +294f:00000000040006000700078006c00660060006000600066006c0078007000600040000000000000000000000 +2950:00000000000000000000000000000000000000000000fff0fff0606030c01980000000000000000000000000 +2951:00000000020006000e001e0036006600060006000600660036001e000e000600020000000000000000000000 +2952:00000000000000000000000000000000c300c600cc00dff0fff0c000c000c000000000000000000000000000 +2953:000000000000000000000000000000000c3006300330ffb0fff0003000300030000000000000000000000000 +2954:000000007fe07fe0040006000700078006c00660060006000600060006000600060000000000000000000000 +2955:000000000600060006000600060006000600066006c007800700060004007fe07fe000000000000000000000 +2956:00000000000000000000000000000000c000c000c000fff0dff0cc00c600c300000000000000000000000000 +2957:00000000000000000000000000000000003000300030fff0ffb0033006300c30000000000000000000000000 +2958:000000007fe07fe0020006000e001e0036006600060006000600060006000600060000000000000000000000 +2959:000000000600060006000600060006000600660036001e000e00060002007fe07fe000000000000000000000 +295a:000000000000000000000000000000000c30183030307ff0fff0003000300030000000000000000000000000 +295b:00000000000000000000000000000000c300c180c0c0ffe0fff0c000c000c000000000000000000000000000 +295c:00000000040006000700078006c0066006000600060006000600060006007fe07fe000000000000000000000 +295d:000000007fe07fe00600060006000600060006000600066006c0078007000600040000000000000000000000 +295e:00000000000000000000000000000000003000300030fff07ff0303018300c30000000000000000000000000 +295f:00000000000000000000000000000000c000c000c000fff0ffe0c0c0c180c300000000000000000000000000 +2960:00000000020006000e001e003600660006000600060006000600060006007fe07fe000000000000000000000 +2961:000000007fe07fe00600060006000600060006000600660036001e000e000600020000000000000000000000 +2962:00000000000000000c00180030007fe0ffe000000000ffe07fe0300018000c00000000000000000000000000 +2963:0000000000000900198039c079e0d9b019801980198019801980198019801980198000000000000000000000 +2964:0000000000000000060003000180ffc0ffe000000000ffe0ffc0018003000600000000000000000000000000 +2965:000000000000198019801980198019801980198019801980d9b079e039c01980090000000000000000000000 +2966:00000000000000000c00180030007fe0ffe00000060003000180ffc0ffe00000000000000000000000000000 +2967:0000000000000000ffe07fe0300018000c000000ffe0ffc00180030006000000000000000000000000000000 +2968:0000000000000000060003000180ffc0ffe000000c00180030007fe0ffe00000000000000000000000000000 +2969:0000000000000000ffe0ffc00180030006000000ffe07fe0300018000c000000000000000000000000000000 +296a:0000000000000000000000000c00180030007fe0ffe000000000ffe0ffe00000000000000000000000000000 +296b:000000000000000000000000ffe0ffe000000000ffe07fe0300018000c000000000000000000000000000000 +296c:000000000000000000000000060003000180ffc0ffe000000000ffe0ffe00000000000000000000000000000 +296d:000000000000000000000000ffe0ffe000000000ffe0ffc00180030006000000000000000000000000000000 +296e:0000000000000980198039807980d980198019801980198019b019e019c01980190000000000000000000000 +296f:0000000000001900198019c019e019b01980198019801980d980798039801980098000000000000000000000 +2970:00000000000000000000000000000000ffe0fff000300030fff0ffe000000000000000000000000000000000 +2971:00000000000000007c007c00000000007c007d8000c00060fff0fff0006000c0018000000000000000000000 +2972:00000000000000001c203e6067c043800000018000c00060fff0fff0006000c0018000000000000000000000 +2973:0000000000000000180030006000fff0fff060003000180000001c203e6067c0438000000000000000000000 +2974:0000000000000000018000c00060fff0fff0006000c0018000001c203e6067c0438000000000000000000000 +2975:0000018000c00060fff0fff0006000c0018000001c203e6067c043801c203e6067c043800000000000000000 +2976:000000000000007003c01e00f0001e0003c0187030006000fff0fff060003000180000000000000000000000 +2977:0000000000000000000000000000003018e033806e00fff0fff06e00338018e0003000000000000000000000 +2978:000000000000e0003c00078000f007803c00e18000c00060fff0fff0006000c0018000000000000000000000 +2979:00001fe03fe07000600070003fe01fe00000018000c00060fff0fff0006000c0018000000000000000000000 +297a:00000000000000f001f00300130026004600fff0fff0460026001300030001f000f000000000000000000000 +297b:00007f807fc000e0006000e07fc07f800000180030006000fff0fff060003000180000000000000000000000 +297c:0000000000000000000038007000c00078001ff01ff07800c000700038000000000000000000000000000000 +297d:0000000000000000000001c000e0003001e0ff80ff8001e0003000e001c00000000000000000000000000000 +297e:000000000000108039c069606f604f2006000600060006000600060006000600060000000000000000000000 +297f:0000000000000600060006000600060006000600060006004f206f60696039c0108000000000000000000000 +2980:0000000066606660666066606660666066606660666066606660666066606660666000000000000000000000 +2981:00000000000000000000000000000f003fc03fc03fc03fc03fc00f0000000000000000000000000000000000 +2982:00000000000000000e003180318031800e00000000000e003180318031800e00000000000000000000000000 +2983:000000001fe031803180198019801980318071803180198019801980318031801fe000000000000000000000 +2984:000000007f8018c018c019801980198018c018e018c019801980198018c018c07f8000000000000000000000 +2985:0000000001e006c00dc01980198033003300330033003300198019800dc006c001e000000000000000000000 +2986:00000000780036003b00198019800cc00cc00cc00cc00cc0198019803b003600780000000000000000000000 +2987:0000000001c006c00cc018c018c030c030c030c030c030c018c018c00cc006c001c000000000000000000000 +2988:000000003800360033003180318030c030c030c030c030c03180318033003600380000000000000000000000 +2989:0000000000c001c003c006c00cc018c030c060c030c018c00cc006c003c001c000c000000000000000000000 +298a:00000000300038003c0036003300318030c0306030c03180330036003c003800300000000000000000000000 +298b:0000000007c007c00600060006000600060006000600060006000600060007c007c0000007c007c000000000 +298c:000000003e003e00060006000600060006000600060006000600060006003e003e0000003e003e0000000000 +298d:0000000007c007c00700078006c00660060006000600060006000600060007c007c000000000000000000000 +298e:000000003e003e000600060006000600060006000600660036001e000e003e003e0000000000000000000000 +298f:0000000007c007c00600060006000600060006000600066006c00780070007c007c000000000000000000000 +2990:000000003e003e000e001e003600660006000600060006000600060006003e003e0000000000000000000000 +2991:000000000600060006000c000c000c00188019c018800c000c000c0006000600060000000000000000000000 +2992:0000000006000600060003000300030011803980118003000300030006000600060000000000000000000000 +2993:00000000000001800300063004c00b000c003800c80038000c000b0004c00630030001800000000000000000 +2994:00000000000018000c00c60032000d00030001c0013001c003000d003200c6000c0018000000000000000000 +2995:00000000000000000d80db0036006c006f00d8c0d830d8c06f006c003600db000d8000000000000000000000 +2996:00000000000000001b000db006c003600f6031b0c1b031b00f60036006c00db01b0000000000000000000000 +2997:0000000000c003800e003c003c003c003c003c003c003c003c003c000e00038000c000000000000000000000 +2998:0000000030001c00070003c003c003c003c003c003c003c003c003c007001c00300000000000000000000000 +2999:00000000000006000f000600000006000f000600000006000f000600000006000f0006000000000000000000 +299a:0000000006000c0018000c0006000c0018000c0006000c0018000c0006000c00180000000000000000000000 +299b:00000000000000008000c060618032001c000c000e001300118020c02060fff0fff040004000000000000000 +299c:00000000000000000000c000c000c000c000ff00c100c100c100c100c100fff0fff000000000000000000000 +299d:00000000000000000000c000c000c000c000f800c400c200d900d900c100fff0fff000000000000000000000 +299e:00000000000000000000006000c00180030006700c801860301060e0c000fff0fff000000000000000000000 +299f:00000000000000000000006000c00180030006000c00180030006000c000fff0fff000000000000000000000 +29a0:00000000000003000c00d80030003c00330060c0603060c033003c003000d8000c0003000000000000000000 +29a1:00000000000000000000c030cfb070e06060b0d0b0d0198019800f000f000600060000000000000000000000 +29a2:00000000000000000000fff0fff00030006000c00180030006000c0018003000600000000000000000000000 +29a3:000000000000000000006000300018000c0006000300018000c000600030fff0fff000000000000000000000 +29a4:00000000006000c00180030006000c00180030006000c000fff0fff00000fff0fff000000000000000000000 +29a5:000000006000300018000c0006000300018000c000600030fff0fff00000fff0fff000000000000000000000 +29a6:000000000000000000000000000000008000c0006000300018000c0007f003f0000000000000000000000000 +29a7:0000000000000000000000000000000003f007f00c00180030006000c0008000000000000000000000000000 +29a8:000000000fc01fc003c066c036c01c800e001b001980318030c060c060c0fff0fff000c000c0000000000000 +29a9:000000003f003f803c00366036c0138007000d80198018c030c030603060fff0fff030003000000000000000 +29aa:0000000000c000c0fff0fff060c060c030c0318019801b000e001c8036c066c003c01fc00fc0000000000000 +29ab:0000000030003000fff0fff03060306030c018c019800d800700138036c036603c003f803f00000000000000 +29ac:00000000000000000000c000c000c000c1f0f070dcf0c790c390c780ccc0d860f060e0000000000000000000 +29ad:00000000000000000000003000300030f830e0f0f3b09e309c301e30333061b060f000700000000000000000 +29ae:00000000000000000000e000f060d860ccc0c780c390c790dcf0f070c1f0c000c000c0000000000000000000 +29af:00000000000000000000007060f061b033301e309c309e30f3b0e0f0f8300030003000300000000000000000 +29b0:00000000000000000e00b180404060409020882084208220812040c0404031a00e0000000000000000000000 +29b1:00000000ffe000000e0031a0404040c08120822084208820902060404040b1800e0000000000000000000000 +29b2:0e00110011000e000e0031a0404040c08120822084208820902060404040b1800e0000000000000000000000 +29b3:00800040ffe000400e8031a0404040c08120822084208820902060404040b1800e0000000000000000000000 +29b4:20004000ffe040002e0031a0404040c08120822084208820902060404040b1800e0000000000000000000000 +29b5:00000000000000000e0031804040404080208020ffe0802080204040404031800e0000000000000000000000 +29b6:00000000000000000e00358044404440842084208420842084204440444035800e0000000000000000000000 +29b7:00000000000000000e00318040405140912091209120912091205140404031800e0000000000000000000000 +29b8:00000000000000000e003180404060409020882084208220812040c0404031800e0000000000000000000000 +29b9:00000000000000000e003180404044408420842084208420bfa04040404031800e0000000000000000000000 +29ba:00000000000000000e0035804440444084208420ffe0802080204040404031800e0000000000000000000000 +29bb:00000000000000000e00b1a0404060c091208a2084208a20912060c04040b1a00e0000000000000000000000 +29bc:00000000000000000e00318040404040b120b220842089a091a04040404031800e0000000000000000000000 +29bd:04000e00150024800e00358044404440842084208420842084204440444035800e0004000000000000000000 +29be:00000000000000000e00318040404e409120a0a0a0a0a0a091204e40404031800e0000000000000000000000 +29bf:00000000000000000e00318040404e409f20bfa0bfa0bfa09f204e40404031800e0000000000000000000000 +29c0:00000000000000000e0031804240444088209020a020902088204440424031800e0000000000000000000000 +29c1:00000000000000000e003180484044408220812080a0812082204440484031800e0000000000000000000000 +29c2:00000000000000000c00330040804080806080508050805080604080408033000c0000000000000000000000 +29c3:00000000000000000c00330040804080807080708040807080704080408033000c0000000000000000000000 +29c4:00000000000000000000fff080308050809081108210841088109010a010c010fff000000000000000000000 +29c5:00000000000000000000fff0c010a01090108810841082108110809080508030fff000000000000000000000 +29c6:00000000000000000000fff08010b0d099908f10bfd0bfd08f109990b0d08010fff000000000000000000000 +29c7:00000000000000000000fff08010801086108f109f909f908f10861080108010fff000000000000000000000 +29c8:00000000000000000000fff0801080109f9090909090909090909f9080108010fff000000000000000000000 +29c9:00000000000000000000ff80808080809ff09090909090909090ff90101010101ff000000000000000000000 +29ca:06000f0006000000060006000f000f001980198030c030c060606060c030fff0fff000000000000000000000 +29cb:0000060006000f000f001980198030c030c060606060c030fff0fff00000fff0fff000000000000000000000 +29cc:0000060006000f000f001980198030c030c067606860c730c0b0cf30c030fff0fff000000000000000000000 +29cd:000000000000000000000000000006000600090009001080108020402040fff0fff000000000000000000000 +29ce:8000e0009800860081808060818086009820e0e083200c203020c02030200c20032000e00020000000000000 +29cf:000000000000000000000000000000a003a00ca030a0c0a030a00ca003a000a0000000000000000000000000 +29d0:0000000000000000000000000000a000b800a600a180a060a180a600b800a000000000000000000000000000 +29d1:000000000000000000008010c030e050f090f910f610f610f910f090e050c030801000000000000000000000 +29d2:000000000000000000008010c030a07090f089f087f087f089f090f0a070c030801000000000000000000000 +29d3:000000000000000000008010c030e070f0f0f9f0fff0fff0f9f0f0f0e070c030801000000000000000000000 +29d4:000000000000000000008010c020e040f080f900fe00fe00f900f080e040c020801000000000000000000000 +29d5:0000000000000000000080104030207010f009f007f007f009f010f020704030801000000000000000000000 +29d6:00000000000000000000fff04020204010800900060006000900108020404020fff000000000000000000000 +29d7:00000000000000000000fff07fe03fc01f800f00060006000f001f803fc07fe0fff000000000000000000000 +29d8:00000000030006000c00180018000c000600030006000c00180018000c000600030000000000000000000000 +29d9:0000000018000c0006000300030006000c0018000c0006000300030006000c00180000000000000000000000 +29da:000000000c6018c0318063006300318018c00c6018c0318063006300318018c00c6000000000000000000000 +29db:000000006300318018c00c600c6018c031806300318018c00c600c6018c03180630000000000000000000000 +29dc:0000000000000000000000000000300048008400840086108610492030c00000000000000000000000000000 +29dd:000000000000060009001080108030c049208610861086108610492030c00000000000000000000000000000 +29de:000000000000000000000600060036c04f2086108610861086104f2036c00600060000000000000000000000 +29df:0000000000000000000000000000204050a08f108f1050a02040000000000000000000000000000000000000 +29e0:00000000000000000000ffc0ffe0fff0e010e010e010e010e010e010e01060103ff000000000000000000000 +29e1:000000000000000000000000003000f003300c303030fff0fff000000000fff0fff000000000000000000000 +29e2:00000000000000000000000000000000c630c630c630c630c630c630c630fff0fff000000000000000000000 +29e3:000000000000000000000000000006600cc0ffe0ffe019803300ffe0ffe06600cc0000000000000000000000 +29e4:000000001c203e6067c04380000006600cc0ffe0ffe019803300ffe0ffe06600cc0000000000000000000000 +29e5:00000000000001100220fff0fff004400880fff0fff011002200fff0fff04400880000000000000000000000 +29e6:0000000000000000000000000000c030c030fff0fff0c030c030fff0fff0c030c03000000000000000000000 +29e7:000000000000060006000600fff0fff00600060006000600fff0fff006000600060000000000000000000000 +29e8:0000000000000000fff0fc30fc307c607c603cc03cc01d801d800f000f000600060000000000000000000000 +29e9:0000000000000000fff0c3f0c3f063e063e033c033c01b801b800f000f000600060000000000000000000000 +29ea:0000000006000f001f803fc07fe0fff07fe03fc01fc00f00666036c01f800f00060000000000000000000000 +29eb:040004000e000e001f001f003f803f807fc07fc0ffe0ffe07fc07fc03f803f801f001f000e000e0004000400 +29ec:000000001f803fc070e060606060606070e03fc01f800600666036c01f800f00060000000000000000000000 +29ed:000000001f803fc07fe07fe07fe07fe07fe03fc01f800600666036c01f800f00060000000000000000000000 +29ee:000000007fe0060006007fe07fe0606060606060606060607fe07fe0060006007fe000000000000000000000 +29ef:000000007fe0060006007fe07fe07fe07fe07fe07fe07fe07fe07fe0060006007fe000000000000000000000 +29f0:000000007fe0060006000f00198020c06060c0306060204019c00f00060006007fe000000000000000000000 +29f1:000000007fe0060006000f001f803fc07fe0fff07fe03fc01fc00f00060006007fe000000000000000000000 +29f2:000000007fe0060006000f0030c06060c030c030c030606030c00f00060006007fe000000000000000000000 +29f3:000000007fe0060006000f003fc07fe0fff0fff0fff07fe03fc00f00060006007fe000000000000000000000 +29f4:00000000000000000000c000c18000c00060fff0fff0006000c0c180c0000000000000000000000000000000 +29f5:000000001800180018000c000c000c0006000600060003000300030001800180018000000000000000000000 +29f6:0000fc00fd80018001800300030003000600060006000c000c000c0018001800180000000000000000000000 +29f7:000000001800180018000c000c000c003fc03fc0060003000300030001800180018000000000000000000000 +29f8:00000180018001800300030003000600060006000c000c000c00180018001800300030003000000000000000 +29f9:00003000300030001800180018000c000c000c00060006000600030003000300018001800180000000000000 +29fa:0000000000000000000000001980198019801980fff0fff01980198019801980000000000000000000000000 +29fb:0000000000000000000000006660666066606660fff0fff06660666066606660000000000000000000000000 +29fc:00000000000000000060006000c0018006001800600018000600018000c00060006000000000000000000000 +29fd:0000000000000000600060003000180006000180006001800600180030006000600000000000000000000000 +29fe:00000000000000000000000000000000060006001f801f800600060000000000000000000000000000000000 +29ff:00000000000000000000000000000000000000001f801f800000000000000000000000000000000000000000 +2a00:00000000000000000e00318040404040802084208e20842080204040404031800e0000000000000000000000 +2a01:00000000000000000e0035804440444084208420ffe0842084204440444035800e0000000000000000000000 +2a02:00000000000000000e003180404060c091208a2084208a20912060c0404031800e0000000000000000000000 +2a03:00000000000000000000c030c030c030c030c030c030c630c630c030c030c030c0306060606070e03fc00f00 +2a04:00000000000000000000c030c030c030c030c630c630dfb0dfb0c630c630c030c0306060606070e03fc00f00 +2a05:00000000000000000000fff0fff0c030c030c030c030c030c030c030c030c030c030c030c030c030c030c030 +2a06:00000000000000000000c030c030c030c030c030c030c030c030c030c030c030c030c030c030c030fff0fff0 +2a07:000000000a000a000a000a0015001500150015002a802a802a802a805140514051405140a0a0a0a0a0a0a0a0 +2a08:00000000a0a0a0a0a0a0a0a051405140514051402a802a802a802a8015001500150015000a000a000a000a00 +2a09:0000000080204040404020802080110011000a000a00040004000a000a001100110020802080404040408020 +2a0a:0000000000007fe0602030201f0038804c4047404740444028801f00202040207fe000000000000000000000 +2a0b:000001e003e0070006007fe0662036001e000e00070007000e001600260046207fe006000e007c0078000000 +2a0c:000080f081f093809300fb0013001300130003000300030003000300030003000300030007003e003c000000 +2a0d:000001e003e00700060006000600060006007fe0060006000600060006000600060006000e007c0078000000 +2a0e:000001e003e0070006000600060006007fe0060006007fe00600060006000600060006000e007c0078000000 +2a0f:000001e003e00700060006000600063006c007000e003600c600060006000600060006000e007c0078000000 +2a10:000001e003e00700060006001f80264026404600460046004600260026001f80060006000e007c0078000000 +2a11:000003c007c00e000c000c000c008c408ce08df04c404c404c803f000c000c000c000c001c00f800f0000000 +2a12:000001e003e007000600060007e00020002000200620062000200020002007e0060006000e007c0078000000 +2a13:000001e003e00700060006000780004000400020062006200020004000400780060006000e007c0078000000 +2a14:000001e003e007000600060007c00620062000100310031000100620062007c0060006000e007c0078000000 +2a15:000001e003e00700060006001f80204020404020462046204020204020401f80060006000e007c0078000000 +2a16:000001e003e00700060006007fe0462046204620462046204620462046207fe0060006000e007c0078000000 +2a17:000000f001f00380030003001b0033006300ffe0fff0633033301b30036003000300030007003e003c000000 +2a18:000001e003e0070006000600666036c01f800f0006000f001f8036c066600600060006000e007c0078000000 +2a19:000001e003e0070006001f803fc076e066606660666066606660666066606660666006000e007c0078000000 +2a1a:000001e003e00700060066606660666066606660666066606660666076e03fc01f8006000e007c0078000000 +2a1b:3fc0000001e003e0070006000600060006000600060006000600060006000600060006000e007c0078000000 +2a1c:000001e003e0070006000600060006000600060006000600060006000600060006000e007c00780000003fc0 +2a1d:000000000000000000008010c030a050909089108610861089109090a050c030801000000000000000000000 +2a1e:0030007000f001b0033006300c30183030306030c030c0306030303018300c300630033001b000f000700030 +2a1f:000000000000000000000000060009001080108009000600000006000900108010801c800480090012000c00 +2a20:0000000000009c00ce00e700738039c01ce00e700e701ce039c07380e700ce009c0000000000000000000000 +2a21:0000000008000c000e000f000d800cc00c000c000c000c000c000c000c000c000c000c000c000c000c000c00 +2a22:000000000600090009000600000006000600060006007fe07fe0060006000600060000000000000000000000 +2a23:000004000e001b00318060c0000006000600060006007fe07fe0060006000600060000000000000000000000 +2a24:0000000000001c203e6067c0438006000600060006007fe07fe0060006000600060000000000000000000000 +2a25:000000000000000000000000000006000600060006007fe07fe0060006000600060000000000060006000000 +2a26:0000000000000000000006000600060006007fe07fe006000600060006001c203e6067c04380000000000000 +2a27:000000000000000000000000000006000600060006007fe07fe0060006f00610061000f00080008000f00000 +2a28:000000000000000000000000000006000600060006007fe07fe006000f001f80060000000000000000000000 +2a29:0000000000000000000000000600060002000c0000007fe07fe0000000000000000000000000000000000000 +2a2a:000000000000000000000000000000000000000000007fe07fe0000000000600060000000000000000000000 +2a2b:000000000000000000000000000060006000000000007fe07fe0000000000060006000000000000000000000 +2a2c:000000000000000000000000000000600060000000007fe07fe0000000006000600000000000000000000000 +2a2d:000000000000000000001c002000460046008600bfc0bfc086004600460020001c0000000000000000000000 +2a2e:00000000000000000000038000400620062006103fd03fd00610062006200040038000000000000000000000 +2a2f:000000000000000000000000204070e039c01f800f001f8039c070e020400000000000000000000000000000 +2a30:0000000000000000000006000600606030c019800f0006000f00198030c06060000000000000000000000000 +2a31:0000000000000000000000000000606030c019800f0006000f00198030c0606000003fc00000000000000000 +2a32:0000000000000000000000000000606030c019800f0006000f00198030c060603fc000000000000000000000 +2a33:00000000000000000000000031801b008e20ce607bc031807bc0ce608e201b00318000000000000000000000 +2a34:00000000000000001c002000400058608cc08780830087808cc05860400020001c0000000000000000000000 +2a35:000000000000000003800040002061a033101e100c101e10331061a000200040038000000000000000000000 +2a36:04000e001b00318060c000001f802040402050a0891086108610891050a0402020401f800000000000000000 +2a37:000000000000000000001f8020404f2050a0a950a650a650a95050a04f2020401f8000000000000000000000 +2a38:000000000000000000001f802040462046208010bfd0bfd080104620462020401f8000000000000000000000 +2a39:060006000900090009001080108010802040264026405fa05fa0462086108010fff000000000000000000000 +2a3a:060006000900090009001080108010802040204020404f204f20402080108010fff000000000000000000000 +2a3b:06000600090009000900108010801080204030c039c04f2046204f209990b0d0fff000000000000000000000 +2a3c:00000000000000000000000000000000000000600060006000607fe07fe00000000000000000000000000000 +2a3d:00000000000000000000000000000000000060006000600060007fe07fe00000000000000000000000000000 +2a3e:0000000000000000000000000000000006000900090006000000000006000900090007000300060018000000 +2a3f:000000000000e070e0706060606060606060606060606060606060606060fff0fff000000000000000000000 +2a40:000000000000000000001f803fc070e060606060666066606060606060606060606000000000000000000000 +2a41:0000000000000000000060606060606060606f606f6060606060606070e03fc01f8000000000000000000000 +2a42:0000000000003fc0000060606060606060606060606060606060606070e03fc01f8000000000000000000000 +2a43:0000000000003fc000001f803fc070e060606060606060606060606060606060606000000000000000000000 +2a44:000000000000000000001f803fc070e06060c030c030c630c630c930c930d0b0d0b000000000000000000000 +2a45:00000000000000000000d0b0d0b0c930c930c630c630c030c030606070e03fc01f8000000000000000000000 +2a46:0000606060606060606060606060606070e03fc01f8000001f803fc070e06060606060606060606060606060 +2a47:00001f803fc070e060606060606060606060606060600000606060606060606060606060606070e03fc01f80 +2a48:000060606060606060606060606070e03fc01f8000003fc000001f803fc070e0606060606060606060606060 +2a49:00001f803fc070e060606060606060606060606000003fc0000060606060606060606060606070e03fc01f80 +2a4a:00000000000000000000c630c630c630c630c630c630c630c630c630c6307fe039c000000000000000000000 +2a4b:0000000000000000000039c07fe0c630c630c630c630c630c630c630c630c630c63000000000000000000000 +2a4c:00000000000000000000fff06060606060606060606060606060606070e03fc01f8000000000000000000000 +2a4d:000000000000000000001f803fc070e060606060606060606060606060606060fff000000000000000000000 +2a4e:00000000000000000000fff0fff0c030c030dfb0d9b0d9b0d9b0d9b0d9b0d9b0d9b000000000000000000000 +2a4f:00000000000000000000d9b0d9b0d9b0d9b0d9b0d9b0d9b0dfb0c030c030fff0fff000000000000000000000 +2a50:00000000000000000000fff0606069607fe0696069607fe06960606070e03fc01f8000000000000000000000 +2a51:0000000000000600060000000000060006000f000f001980198030c030c06060606000000000000000000000 +2a52:00000000000006000600000000006060606030c030c0198019800f000f000600060000000000000000000000 +2a53:00000000000000000000000000000e000e001b001b00318035806ac06ac0d160d16000000000000000000000 +2a54:0000000000000000000000000000d160d1606ac06ac0358031801b001b000e000e0000000000000000000000 +2a55:00000000000000000000000000000a000a00150015002a802a8051405140a0a0a0a000000000000000000000 +2a56:0000000000000000000000000000a0a0a0a0514051402a802a80150015000a000a0000000000000000000000 +2a57:00000000000000000000c010c030c060c0c0c180c300c600cc00d800f000e000c00000000000000000000000 +2a58:000000000000000000000030007000f001b0033006300c30183030306030c030803000000000000000000000 +2a59:000000000000000000006060606036c036c01f80198019801f8036c036c06060606000000000000000000000 +2a5a:0000000000000000000000000000060006000f000f001f801f8036c036c06660666000000000000000000000 +2a5b:00000000000000000000000000006660666036c036c01f801f800f000f000600060000000000000000000000 +2a5c:0000000000000000000000000000060006000f000f0019801980fff030c06060606000000000000000000000 +2a5d:00000000000000000000000000006060606030c0fff0198019800f000f000600060000000000000000000000 +2a5e:00003fc03fc000003fc03fc00000060006000f000f001980198030c030c06060606000000000000000000000 +2a5f:0000000000000000000000000000060006000f000f001980198030c030c06060606000003fc03fc000000000 +2a60:000000000000000000000000060006000f000f001980198030c030c06060606000003fc03fc000003fc03fc0 +2a61:00000000000000000000000000000000000030c030c0198019800f000f000600060000003fc03fc000000000 +2a62:00003fc03fc000003fc03fc000006060606030c030c0198019800f000f000600060000000000000000000000 +2a63:0000000000000000000000006060606030c030c0198019800f000f000600060000003fc03fc000003fc03fc0 +2a64:0030007000f001b0033006300c30183030306030fff0fff06030303018300c300630033001b000f000700030 +2a65:c000e000f000d800cc00c600c300c180c0c0c060fff0fff0c060c0c0c180c300c600cc00d800f000e000c000 +2a66:0000000000000000000000000000000000007fe07fe0000000007fe07fe00000060006000000000000000000 +2a67:00000000000000000600060000007fe07fe0000000007fe07fe0000000007fe07fe000000000000000000000 +2a68:00000000000000001980198019807fe07fe0198019807fe07fe0198019807fe07fe019801980000000000000 +2a69:00000000000000002640264026407fe07fe0264026407fe07fe0264026407fe07fe026402640000000000000 +2a6a:0000000000000000000006000600000000001c203e6036c067c0438000000000000000000000000000000000 +2a6b:000000000000000000c000c0000000001c203e6036c067c04380000000003000300000000000000000000000 +2a6c:00000000000000001c203e6036c067c0438000007fe000001c203e6036c067c0438000000000000000000000 +2a6d:000006000600000000001c203e6036c067c0438000007fe07fe0000000007fe07fe000000000000000000000 +2a6e:000030c019800f003fc03fc00f00198030c0000000007fe07fe0000000007fe07fe000000000000000000000 +2a6f:000006000f001980000000001c203e6067c04380000000001c203e6067c04380000000000000000000000000 +2a70:00001c203e6067c0438000001c203e6067c0438000007fe07fe0000000007fe07fe000000000000000000000 +2a71:000000007fe07fe0000000007fe07fe000000600060006003fc03fc006000600060000000000000000000000 +2a72:000000000600060006003fc03fc006000600060000007fe07fe0000000007fe07fe000000000000000000000 +2a73:000000000000000000007fe07fe0000000007fe07fe000001c203e6067c04380000000000000000000000000 +2a74:0000000000000000000000000000000000006de06de0000000006de06de00000000000000000000000000000 +2a75:000000000000000000000000000000000000fbe0fbe000000000fbe0fbe00000000000000000000000000000 +2a76:000000000000000000000000000000000000eee0eee000000000eee0eee00000000000000000000000000000 +2a77:00000000000030c030c0000000007fe07fe0000000007fe07fe00000000030c030c000000000000000000000 +2a78:000000000000db60db6000000000ffe0ffe000000000ffe0ffe000000000ffe0ffe000000000000000000000 +2a79:0000000000000000000000000000006001c007001e60789078901e60070001c0006000000000000000000000 +2a7a:000000000000000000000000000030001c00070033c048f048f033c007001c00300000000000000000000000 +2a7b:3c007e00c30006000c001800000018e001c007001e00780078001e00070001c0006000000000000000000000 +2a7c:03c007e00c30006000c001800000618038000e00078001e001e007800e003800700000000000000000000000 +2a7d:0000000000000000006001c007001e00780078001e00070071c01c60070001c0006000000000000000000000 +2a7e:0000000000000000600038000e00078001e001e007800e0038e063800e003800600000000000000000000000 +2a7f:0000000000000000006001c007001e00786078601e00070071c01c60070001c0006000000000000000000000 +2a80:0000000000000000600038000e00078061e061e007800e0038e063800e003800600000000000000000000000 +2a81:0000000000000000606061c007001e00780078001e00070071c01c60070001c0006000000000000000000000 +2a82:0000000000000000606038600e00078001e001e007800e0038e063800e003800600000000000000000000000 +2a83:0000006000600000006001c007001e00780078001e00070071c01c60070001c0006000000000000000000000 +2a84:0000600060000000600038000e00078001e001e007800e0038e063800e003800600000000000000000000000 +2a85:006001c007001e00780078001e00070001c0006000001c203e6067c0438000001c203e6067c0438000000000 +2a86:600038000e00078001e001e007800e003800600000001c203e6067c0438000001c203e6067c0438000000000 +2a87:000000000000006001c007001e00780078001e00070001c000e0018003007fe07fe018003000000000000000 +2a88:000000000000600038000e00078001e001e007800e0038007000018003007fe07fe018003000000000000000 +2a89:006001c007001e00780078001e00070001c0016001001d203e6067c0438004001c203e606fc04b8008001000 +2a8a:600038000e00078001e001e007800e003800610001001d203e6067c0438004001c203e606fc04b8008001000 +2a8b:0000000001e00f0078000f0001e000007fe0000000007fe0000078000f0001e00f0078000000000000000000 +2a8c:0000000078000f0001e00f00780000007fe0000000007fe0000001e00f0078000f0001e00000000000000000 +2a8d:006001c007001e00780078001e00070001c0006000001c203e6067c0438000007fe07fe00000000000000000 +2a8e:600038000e00078001e001e007800e003800600000001c203e6067c0438000007fe07fe00000000000000000 +2a8f:000001e00f0078000f0001e000001c203e6067c04380000078000f0001e00f00780000000000000000000000 +2a90:000078000f0001e00f00780000001c203e6067c04380000001e00f0078000f0001e000000000000000000000 +2a91:000001e00f0078000f0001e078000f0001e00f00780000007fe07fe0000000007fe07fe00000000000000000 +2a92:000078000f0001e00f00780001e00f0078000f0001e000007fe07fe0000000007fe07fe00000000000000000 +2a93:000001e00f0078000f0001e078000f0001e078000f0001e00f00780001e00f00780000000000000000000000 +2a94:000078000f0001e00f00780001e00f00780001e00f0078000f0001e078000f0001e000000000000000000000 +2a95:0000000000000000006001c007001c6071c007001e00780078001e00070001c0006000000000000000000000 +2a96:0000000000000000600038000e00638038e00e00078001e001e007800e003800600000000000000000000000 +2a97:0000000000000000006001c007001c6071c007001e00786078601e00070001c0006000000000000000000000 +2a98:0000000000000000600038000e00638038e00e00078061e061e007800e003800600000000000000000000000 +2a99:00007fe07fe000007fe07fe00000006001c007001e00780078001e00070001c0006000000000000000000000 +2a9a:00007fe07fe000007fe07fe00000600038000e00078001e001e007800e003800600000000000000000000000 +2a9b:0000006001c007001c6071c007001c6071c007001e00780078001e00070001c0006000000000000000000000 +2a9c:0000600038000e00638038e00e00638038e00e00078001e001e007800e003800600000000000000000000000 +2a9d:00001c203e6036c067c043800000006001c007001e00780078001e00070001c0006000000000000000000000 +2a9e:00001c203e6036c067c043800000600038000e00078001e001e007800e003800600000000000000000000000 +2a9f:00001c203e6036c067c04380006001c007001e00780078001e00070001c000607fe07fe000007fe07fe00000 +2aa0:00001c203e6036c067c04380600038000e00078001e001e007800e00380060007fe07fe000007fe07fe00000 +2aa1:0000000000000000000000000000006001c007201e6079c079c01e60072001c0006000000000000000000000 +2aa2:0000000000000000000000000000600038004e00678039e039e067804e003800600000000000000000000000 +2aa3:00000000000000000e701ce039c07380e700e700738039c01ce00e700000fff0fff000000000000000000000 +2aa4:00000000000000000000000060c031801b000e001b0031801b000e001b00318060c000000000000000000000 +2aa5:000000000000000000000000000000008020c06060c031801b00318060c0c060802000000000000000000000 +2aa6:000000000000000000000000000000c003a00e203c10f010f0103c100e2003a000c000000000000000000000 +2aa7:000000000000000000000000000030005c00470083c080f080f083c047005c00300000000000000000000000 +2aa8:000000000000000000c003a00e203c10f010f0103c100e20e3a038c00e00038000c000000000000000000000 +2aa9:000000000000000030005c00470083c080f080f083c047005c7031c007001c00300000000000000000000000 +2aaa:0000000000000000000000000000006001c007001e007fe07fe01e00070001c0006000000000000000000000 +2aab:0000000000000000000000000000600038000e0007807fe07fe007800e003800600000000000000000000000 +2aac:0000000000000000006001c007001e007fe07fe01e00070001c0006000007fe07fe000000000000000000000 +2aad:0000000000000000600038000e0007807fe07fe007800e003800600000007fe07fe000000000000000000000 +2aae:000000000000000006000f00090079e079e0000000007fe07fe0000000007fe07fe000000000000000000000 +2aaf:00000000000000000000006001c007803c00e0003c00078001c000600000ffe0ffe000000000000000000000 +2ab0:00000000000000000000c00070003c00078000e007803c007000c0000000ffe0ffe000000000000000000000 +2ab1:00000000000000000000006001c007803c00e0003c00078001c003600600ffe0ffe030006000000000000000 +2ab2:00000000000000000000c00070003c00078000e007803c007000c0c00180ffe0ffe00c001800000000000000 +2ab3:00000000006001c007803c00e0003c00078001c000600000ffe0ffe00000ffe0ffe000000000000000000000 +2ab4:00000000c00070003c00078000e007803c007000c0000000ffe0ffe00000ffe0ffe000000000000000000000 +2ab5:00000000006001c007803c00e0003c00078001c006600600ffe0ffe01800ffe0ffe060006000000000000000 +2ab6:00000000c00070003c00078000e007803c007000c1800180ffe0ffe00600ffe0ffe018001800000000000000 +2ab7:0000006001c007803c00e0003c00078001c000601c203e6067c043801c203e6067c043800000000000000000 +2ab8:0000c00070003c00078000e007803c007000c0001c203e6067c043801c203e6067c043800000000000000000 +2ab9:0000006001c007803c00e0003c00078001c002601e203e6067c047801c203e606fc04b801000100000000000 +2aba:0000c00070003c00078000e007803c007080c0801ca03f6067c043801e203e6067c047800400040000000000 +2abb:000000000000000000000000031006301ce07380ce0073801ce0067003100000000000000000000000000000 +2abc:0000000000000000000000008c00c60073801ce007301ce07380e6008c000000000000000000000000000000 +2abd:0000000000000000000007e01fe03800600061806180600038001fe007e00000000000000000000000000000 +2abe:000000000000000000007e007f8001c0006018601860006001c07f807e000000000000000000000000000000 +2abf:000007e01fe03800600060006000600038001fe007e000000600060006003fc03fc006000600060000000000 +2ac0:00007e007f8001c0006000600060006001c07f807e0000000600060006003fc03fc006000600060000000000 +2ac1:000007e01fe03800600060006000600038001fe007e0000030c019800f0006000f00198030c0000000000000 +2ac2:00007e007f8001c0006000600060006001c07f807e00000030c019800f0006000f00198030c0000000000000 +2ac3:000006000600000007e01fe03800600060006000600038001fe007e000007fe07fe000000000000000000000 +2ac4:00000600060000007e007f8001c0006000600060006001c07f807e0000007fe07fe000000000000000000000 +2ac5:0000000007e01fe03800600060006000600038001fe007e000007fe07fe000007fe07fe00000000000000000 +2ac6:000000007e007f8001c0006000600060006001c07f807e0000007fe07fe000007fe07fe00000000000000000 +2ac7:0000000007e01fe03800600060006000600038001fe007e000001c203e6036c067c043800000000000000000 +2ac8:000000007e007f8001c0006000600060006001c07f807e0000001c203e6036c067c043800000000000000000 +2ac9:000007e01fe03800600060006000600038001fe007e000001c203e6067c043801c203e6067c0438000000000 +2aca:00007e007f8001c0006000600060006001c07f807e0000001c203e6067c043801c203e6067c0438000000000 +2acb:0000000007e01fe03800600060006000600038001fe007e001807fe07fe006007fe07fe01800300000000000 +2acc:000000007e007f8001c0006000600060006001c07f807ec001807fe07fe003007fe07fe006000c0000000000 +2acd:000000000000000000000000000000000000fff0fff0c000c000c000c000fc00fc0000000000000000000000 +2ace:000000000000000000000000000000000000fff0fff0003000300030003003f003f000000000000000000000 +2acf:0000000000000000000007e01fe03860606060606060606038601fe007e00000000000000000000000000000 +2ad0:000000000000000000007e007f8061c0606060606060606061c07f807e000000000000000000000000000000 +2ad1:000000000000000007e01fe03860606060606060606038601fe007e000007fe07fe000000000000000000000 +2ad2:00000000000000007e007f8061c0606060606060606061c07f807e0000007fe07fe000000000000000000000 +2ad3:000007e01fe038006000600038001fe007e000007e007f8001c00060006001c07f807e000000000000000000 +2ad4:00007e007f8001c00060006001c07f807e00000007e01fe038006000600038001fe007e00000000000000000 +2ad5:000007e01fe038006000600038001fe007e0000007e01fe038006000600038001fe007e00000000000000000 +2ad6:00007e007f8001c00060006001c07f807e0000007e007f8001c00060006001c07f807e000000000000000000 +2ad7:000000000000000000000000e0e0f3e03b801b001b001b001b003b80f3e0e0e0000000000000000000000000 +2ad8:000000000000000000000000e0e0f3e03b801b007fc07fc01b003b80f3e0e0e0000000000000000000000000 +2ad9:000000000000000000000000000000000f003fc036c066606660666066606660000000000000000000000000 +2ada:00000000000000003fc03fc0060006000f003fc036c066606660666066606660060006000600000000000000 +2adb:000000000000000006000600060006000f003fc036c066606660666066606660060006000600000000000000 +2adc:0000000000000000060006000600066006c007006e607660e66036c03fc00f00000000000000000000000000 +2add:000000000000000006000600060006000600060066606660666036c03fc00f00000000000000000000000000 +2ade:00000000000000000000000000600060006000600fe00fe00060006000600060000000000000000000000000 +2adf:000000000000000000000000000000007fe07fe0060006000600060006000000000000000000000000000000 +2ae0:00000000000000000000000000000000060006000600060006007fe07fe00000000000000000000000000000 +2ae1:000000000c000c000c000ce00d100d000ce00c100d100ce00c00ffc0ffc00000000000000000000000000000 +2ae2:00000000000000000000c000c000fff0fff0c000fff0fff0c000fff0fff0c000c00000000000000000000000 +2ae3:0000000000000000000003300330033003300330ff30ff300330033003300330033000000000000000000000 +2ae4:00000000000000000000003000300030fff0fff000300030fff0fff000300030003000000000000000000000 +2ae5:00000000000000000000033003300330ff30ff3003300330ff30ff3003300330033000000000000000000000 +2ae6:00000000000000000000cc00cc00cc00cc00cc00fff0fff0cc00cc00cc00cc00cc0000000000000000000000 +2ae7:00000000000000000000fff0fff000000000fff0fff006000600060006000600060000000000000000000000 +2ae8:00000000000000000000060006000600060006000600fff0fff000000000fff0fff000000000000000000000 +2ae9:0000000000000600060006000600fff0fff000000000fff0fff0060006000600060000000000000000000000 +2aea:000000000000000000000000fff0fff019801980198019801980198019801980198000000000000000000000 +2aeb:000000000000000000000000198019801980198019801980198019801980fff0fff000000000000000000000 +2aec:00000000000000000000fff0fff000300030fff0fff000300030003000300030003000000000000000000000 +2aed:00000000000000000000fff0fff0c000c000fff0fff0c000c000c000c000c000c00000000000000000000000 +2aee:00000000000006000600060036001e000e0006000700078006c0060006000600060000000000000000000000 +2aef:000000000f0010801080108010800f0006000600060006000600060006000600060000000000000000000000 +2af0:000000000600060006000600060006000600060006000f0010801080108010800f0000000000000000000000 +2af1:000000003fc03fc006000600060006000600060006000f0010801080108010800f0000000000000000000000 +2af2:000000000000198019801980198019801980fff0fff019801980198019801980198000000000000000000000 +2af3:000000000000198019801980198019807d80dfb0dfb01be01980198019801980198000000000000000000000 +2af4:0000000000006660666066606660666066606660666066606660666066606660666000000000000000000000 +2af5:000000000000666066606660666066606660fff0fff066606660666066606660666000000000000000000000 +2af6:000000000e000e000e000000000000000e000e000e000000000000000e000e000e0000000000000000000000 +2af7:0000000000000180030006600cc0198033306660ccc06660333019800cc00660030001800000000000000000 +2af8:00000000000018000c00660033001980ccc0666033306660ccc01980330066000c0018000000000000000000 +2af9:0000006001c007001e00780078001e00070071c01c60070071c01c60070001c0006000000000000000000000 +2afa:0000600038000e00078001e001e007800e0038e063800e0038e063800e003800600000000000000000000000 +2afb:000000000000333033303330333033306660666066606660ccc0ccc0ccc0ccc0ccc000000000000000000000 +2afc:0000000066606660666066606660666066606660666066606660666066606660666066606660666066600000 +2afd:0000000000000cc00cc00cc00cc00cc019801980198019803300330033003300330000000000000000000000 +2afe:0000000000000000000000001f801980198019801980198019801980198019801f8000000000000000000000 +2aff:00001f80198019801980198019801980198019801980198019801980198019801f8000000000000000000000 +2b00:000000000000000000000ff0041002100210041008d011302210440088005000200000000000000000000000 +2b01:00000000000000000000ff008200840084008200b100c88084400220011000a0004000000000000000000000 +2b02:0000000000000000000020005000880044002210113008d004100210021004100ff000000000000000000000 +2b03:00000000000000000000004000a0011002208440c880b1008200840084008200ff0000000000000000000000 +2b04:00000000000000000000000000000900198029404f2080104f20294019800900000000000000000000000000 +2b05:00000000000000000000000000000800180038007ff0fff07ff0380018000800000000000000000000000000 +2b06:0000000006000f001f803fc07fe0fff01f801f801f801f801f801f801f801f801f8000000000000000000000 +2b07:000000001f801f801f801f801f801f801f801f801f80fff07fe03fc01f800f00060000000000000000000000 +2b08:000000000000000000000ff007f003f003f007f00ff01f303e107c00f8007000200000000000000000000000 +2b09:00000000000000000000ff00fe00fc00fc00fe00ff00cf8087c003e001f000e0004000000000000000000000 +2b0a:0000000000000000000020007000f8007c003e101f300ff007f003f003f007f00ff000000000000000000000 +2b0b:00000000000000000000004000e001f003e087c0cf80ff00fe00fc00fc00fe00ff0000000000000000000000 +2b0c:00000000000000000000000000000900198039c07fe0fff07fe039c019800900000000000000000000000000 +2b0d:06000f001f803fc07fe0fff01f801f801f801f801f80fff07fe03fc01f800f00060000000000000000000000 +2b0e:00000000000000000000000000000000ffc0ffc000c000c000c003f001e000c0000000000000000000000000 +2b0f:00000000000000000000000000c001e003f000c000c000c0ffc0ffc000000000000000000000000000000000 +2b10:000000000000000000000000000000003ff03ff0300030003000fc0078003000000000000000000000000000 +2b11:00000000000000000000000030007800fc003000300030003ff03ff000000000000000000000000000000000 +2b12:00000000000000000000fff0fff0fff0fff0fff0fff080108010801080108010fff000000000000000000000 +2b13:00000000000000000000fff080108010801080108010fff0fff0fff0fff0fff0fff000000000000000000000 +2b14:00000000000000000000fff0bff09ff08ff087f083f081f080f0807080308010fff000000000000000000000 +2b15:00000000000000000000fff08010c010e010f010f810fc10fe10ff10ff90ffd0fff000000000000000000000 +2b16:0000000000000000000006000d001c803c407c20fc10fc107c203c401c800d00060000000000000000000000 +2b17:0000000000000000000006000b00138023c043e083f083f043e023c013800b00060000000000000000000000 +2b18:0000000000000000000006000f001f803fc07fe0fff080104020204010800900060000000000000000000000 +2b19:00000000000000000000060009001080204040208010fff07fe03fc01f800f00060000000000000000000000 +2b1a:00000000000000000000aaa00010800000108000001080000010800000108000555000000000000000000000 +2b1b:00000000000000000000000000000003ffc003ffc003ffc003ffc003ffc003ffc003ffc003ffc003ffc003ffc003ffc003ffc0000000000000000000000000000000 +2b1c:00000000000000000000000000000003ffc002004002004002004002004002004002004002004002004002004002004003ffc0000000000000000000000000000000 +2b1d:0000000000000000000000000000000000000000060006000000000000000000000000000000000000000000 +2b1e:0000000000000000000000000000000000000f00090009000f00000000000000000000000000000000000000 +2b1f:000000000000000006000f001f803fc07fe07fe07fe03fc03fc03fc01f801f801f8000000000000000000000 +2b20:000000000000000006000900108020404020402040202040204030c0108010801f8000000000000000000000 +2b21:0000000000000600090010802040402040204020402040204020204010800900060000000000000000000000 +2b22:00000000000006000f001f803fc07fe07fe07fe07fe07fe07fe03fc01f800f00060000000000000000000000 +2b23:0000000000001f801f803fc03fc07fe07fe07fe07fe07fe07fe03fc03fc01f801f8000000000000000000000 +2b24:000000000000000000001f803fc07fe07fe0fff0fff0fff0fff07fe07fe03fc01f8000000000000000000000 +2b25:000000000000000000000000000004000e001f003f807fc03f801f000e000400000000000000000000000000 +2b26:000000000000000000000000000004000a00110020804040208011000a000400000000000000000000000000 +2b27:000000000000040004000e000e001f001f003f803f801f001f000e000e000400040000000000000000000000 +2b28:000000000000040004000a000a001100110020802080110011000a000a000400040000000000000000000000 +2b29:0000000000000000000000000000000006000f001f803fc01f800f0006000000000000000000000000000000 +2b2a:00000000000000000000060006000f000f001f801f800f000f00060006000000000000000000000000000000 +2b2b:0000000000000000000006000600090009001080108009000900060006000000000000000000000000000000 +2b2c:0000000000000000000000000f003fc07fe0fff0fff0fff0fff07fe03fc00f00000000000000000000000000 +2b2d:0000000000000000000000000f0030c040208010801080108010402030c00f00000000000000000000000000 +2b2e:000000000000000000000f001f803fc03fc07fe07fe07fe07fe03fc03fc01f800f0000000000000000000000 +2b2f:000000000000000000000f0010802040204040204020402040202040204010800f0000000000000000000000 +2b30:000000000000000000000000180033806440fff0fff064403380180000000000000000000000000000000000 +2b31:180030006000fff0fff060003000180030006000fff0fff060003000180030006000fff0fff0600030001800 +2b32:00000000000000000000000001c016b024904490fff04490249016b001c00000000000000000000000000000 +2b33:000000000000000000000000018000c0106028b04530826000c0018000000000000000000000000000000000 +2b34:0000000000000000000000000000124024404840fff0fff04840244012400000000000000000000000000000 +2b35:000000000000000000000000000012a024a048a0fff0fff048a024a012a00000000000000000000000000000 +2b36:0000000000000000000000000000123024304830fff0fff04830243012300000000000000000000000000000 +2b37:0000000000000000000000000000120024004800edb0edb04800240012000000000000000000000000000000 +2b38:000000000000000000000000180030006000d550d55060003000180000000000000000000000000000000000 +2b39:0000000000000000000000000000121022204240ff80ff804240222012100000000000000000000000000000 +2b3a:0000000000000000000000000000151025204540ff80ff804540252015100000000000000000000000000000 +2b3b:0000000000000000000000000000121024204840ff80ff804840242012100000000000000000000000000000 +2b3c:0000000000000000000000000000151029205140ff80ff805140292015100000000000000000000000000000 +2b3d:00000000000000000000000000002a9052a0a2c0ffc0ffc0a2c052a02a900000000000000000000000000000 +2b3e:000000000000000000000000000000001a10312060c0fff0fff060c031201a10000000000000000000000000 +2b3f:0000000000000000000000001800338066c0fc70f83060003000180000000000000000000000000000000000 +2b40:000000000000000003e003e00000000003e01be030006000fff0fff060003000180000000000000000000000 +2b41:0000000000000000438067c03e601c200000180030006000fff0fff060003000180000000000000000000000 +2b42:0000180030006000fff0fff060003000180000001c203e6067c043801c203e6067c043800000000000000000 +2b43:0000000000000000000000000000c00071801cc00760fff0fff007601cc07180c00000000000000000000000 +2b44:000000000000f000f8000c000c8006400620fff0fff0062006400c800c00f800f00000000000000000000000 +2b45:0000000000000000100010003ff0200040007ff0800080007ff0400020003ff0100010000000000000000000 +2b46:000000000000000000800080ffc000400020ffe000100010ffe000200040ffc0008000800000000000000000 +2b47:0000000000000000438067c03e601c200000018000c00060fff0fff0006000c0018000000000000000000000 +2b48:018000c00060fff0fff0006000c001800000438067c03e601c200000438067c03e601c200000000000000000 +2b49:00000000000000001c203e6067c043800000180030006000fff0fff060003000180000000000000000000000 +2b4a:180030006000fff0fff060003000180000001c203e6067c0438000001c203e6067c043800000000000000000 +2b4b:0000000000000000180030006000fff0fff06000300018000000438067c03e601c2000000000000000000000 +2b4c:0000000000000000018000c00060fff0fff0006000c001800000438067c03e601c2000000000000000000000 +2b4d:000000000000030006000c00180030007fe07fe000c00180230036003c003e003f0000000000000000000000 +2b4e:00000000000000000000030007800fc003000300060006000c000c0000000000000000000000000000000000 +2b4f:000000000000000000000c000c0006000600030003000fc00780030000000000000000000000000000000000 +2b50:00000000000000000000000000000000180000990000660000240000c30000c300002400006600009900001800000000000000000000000000000000000000000000 +2b51:0000000000000000000000000000000019800f003fc00f001980000000000000000000000000000000000000 +2b52:0000000000000000000000000000000011000e0031800e001100000000000000000000000000000000000000 +2b53:0000000000000000000000000f003f80ffc0ffe0fff0fff0ffe0ffc03f800f00000000000000000000000000 +2b54:0000000000000000000000000f003080c0408020801080108020c04030800f00000000000000000000000000 +2b55:000000003c0001ff8003c3c00600600c003018001818001818001830000c30000c30000c30000c1800181800181800180c003006006003c3c001ff80003c00000000 +2b56:0000000000000000000000000f003fc06060cf30d0b0d0b0cf3060603fc00f00000000000000000000000000 +2b57:000000000000000000001f803fc060606f60d0b0d0b0d0b0d0b06f6060603fc01f8000000000000000000000 +2b58:0000000000000000000000001f803fc030c0606060606060606030c03fc01f80000000000000000000000000 +2b59:000000000000000000001f803fc0606070e0c930c630c630c93070e060603fc01f8000000000000000000000 +2b5a:00000000000000000000038007c00c400c4019f018e03040300060006000c000c00000000000000000000000 +2b5b:00000000000038006c00c600c600030003000180018000c000c003f001e000c0000000000000000000000000 +2b5c:000000000000000000c001e003f000c000c0018001800300030006000600fc00fc0000000000000000000000 +2b5d:0000000000000000fc00fc0006000600030003000180018000c000c003f001e000c000000000000000000000 +2b5e:00000000000003000300060006000c000c001800180033f031f063e06e60f820c00000000000000000000000 +2b5f:00000000000000000000000000000c000c001800180033f031f063e06e60f820c00000000000000000000000 +2b60:000000000000000000000000100030007000ffe0ffe070003000100000000000000000000000000000000000 +2b61:0000000006000f001f803fc00600060006000600060006000600060006000600060000000000000000000000 +2b62:0000000000000000000000000100018001c0ffe0ffe001c00180010000000000000000000000000000000000 +2b63:00000000060006000600060006000600060006000600060006003fc01f800f00060000000000000000000000 +2b64:000000000000000000000000108030c070e0fff0fff070e030c0108000000000000000000000000000000000 +2b65:0000000006000f001f803fc006000600060006000600060006003fc01f800f00060000000000000000000000 +2b66:00000000000000000000f800f000f000f8009c000e000700038001c000e00070002000000000000000000000 +2b67:0000000000000000000001f000f000f001f0039007000e001c0038007000e000400000000000000000000000 +2b68:000000000000000000004000e000700038001c000e000700039001f000f000f001f000000000000000000000 +2b69:000000000000000000000020007000e001c0038007000e009c00f800f000f000f80000000000000000000000 +2b6a:000000000000000000000000100030007000edb0edb070003000100000000000000000000000000000000000 +2b6b:000006000f001f80060006000000000006000600060000000000060006000600000000000600060006000000 +2b6c:000000000000000000000000008000c000e0db70db7000e000c0008000000000000000000000000000000000 +2b6d:0000060006000600000000000600060006000000000006000600060000000000060006001f800f0006000000 +2b6e:0000000000001f000f001f003300610060006000606060606060204030c019800f0000000000000000000000 +2b6f:0000000000000f800f000f800cc0086000600060606060606060204030c019800f0000000000000000000000 +2b70:000000000000000000000000c400cc00dc00fff0fff0dc00cc00c40000000000000000000000000000000000 +2b71:000000003fc03fc006000f001f803fc006000600060006000600060006000600060000000000000000000000 +2b72:0000000000000000000000000230033003b0fff0fff003b00330023000000000000000000000000000000000 +2b73:000000000600060006000600060006000600060006003fc01f800f0006003fc03fc000000000000000000000 +2b76:00000000fc00fc000000f800f000f000f8009c000e000700038001c000e00070002000000000000000000000 +2b77:0000000003f003f0000001f000f000f001f0039007000e001c0038007000e000400000000000000000000000 +2b78:000000000000000000004000e000700038001c000e000700039001f000f000f001f0000003f003f000000000 +2b79:000000000000000000000020007000e001c0038007000e009c00f800f000f000f8000000fc00fc0000000000 +2b7a:0000000000000000000000000000124032407240fff0fff07240324012400000000000000000000000000000 +2b7b:0000000006000f001f803fc00600060006007fe07fe0060006007fe07fe00600060000000000000000000000 +2b7c:0000000000000000000000000000248024c024e0fff0fff024e024c024800000000000000000000000000000 +2b7d:00000000060006007fe07fe0060006007fe07fe00600060006003fc01f800f00060000000000000000000000 +2b7e:0000c400cc00dc00fff0fff0dc00cc00c4000230033003b0fff0fff003b00330023000000000000000000000 +2b7f:00000000fcc0fcc030c078c0fcc030c030c030c030c030c033f031e030c033f033f000000000000000000000 +2b80:000000000000100030007000fff0fff07000308010c000e0fff0fff000e000c0008000000000000000000000 +2b81:000000000000000030c078c0fcc030c030c030c030c030c030c030c033f031e030c000000000000000000000 +2b82:000000000000008000c000e0fff0fff000e010c030807000fff0fff070003000100000000000000000000000 +2b83:000000000000000030c031e033f030c030c030c030c030c030c030c0fcc078c030c000000000000000000000 +2b84:00000000100030007000fff0fff070003000100030007000fff0fff070003000100000000000000000000000 +2b85:000000000000000030c079e0fff030c030c030c030c030c030c030c030c030c030c000000000000000000000 +2b86:00000000008000c000e0fff0fff000e000c0008000c000e0fff0fff000e000c0008000000000000000000000 +2b87:000000000000000030c030c030c030c030c030c030c030c030c030c0fff079e030c000000000000000000000 +2b88:00000f003fc07be073e0e3f0c0008000000000008000c000e3f073e07be03fc00f0000000000000000000000 +2b89:000000000f003fc079e070e0e070c0308010e070e070e070e070e07060606060204000000000000000000000 +2b8a:00000f003fc07de07ce0fc70003000100000000000100030fc707ce07de03fc00f0000000000000000000000 +2b8b:00000000204060606060e070e070e070e070e0708010c030e07070e079e03fc00f0000000000000000000000 +2b8c:00000000100030007000fe00ff8071c0306010600060006001c03f803e000000000000000000000000000000 +2b8d:00000000000000000000018003c007e00ff0c180c180c180c180c180e3807f003e0000000000000000000000 +2b8e:000000000f803f807000c000c000c100c18071c03fe00fe001c0018001000000000000000000000000000000 +2b8f:0000000000000000000007c00fe01c7018301830183018301830ff007e003c00180000000000000000000000 +2b90:00000000000001f001f00030103030607060ffc0ffc070003000100000000000000000000000000000000000 +2b91:000000000000f800f800c000c08060c060e03ff03ff000e000c0008000000000000000000000000000000000 +2b92:000000000000f9f0f9f000300030003002300630cff0cff00600020000000000000000000000000000000000 +2b93:000000000000f9f0f9f0c000c000c000c400c600ff30ff300600040000000000000000000000000000000000 +2b94:00000000000000000000020003001f8023407240f84021f024e02c401f800c00040000000000000000000000 +2b95:00000000000000000000000000000100018001c0ffe0fff0ffe001c001800100000000000000000000000000 +2b97:fff080109f9040205fa046202640264026401680108010800900090009000600060000000000000000000000 +2b98:00000000000000000000000000e003200c40308041007f003f800fc003e000e0000000000000000000000000 +2b99:000000000000000000000000060006000d000d001c801c803c403e40792070a0606000000000000000000000 +2b9a:00000000000000000000000070004c00230010c008200fe01fc03f007c007000000000000000000000000000 +2b9b:000000000000000000000000606050e049e027c023c0138013800b000b000600060000000000000000000000 +2b9c:00000000000000000000000000e003e00fc03f807f007f003f800fc003e000e0000000000000000000000000 +2b9d:000000000000000000000000060006000f000f001f801f803fc03fc079e070e0606000000000000000000000 +2b9e:00000000000000000000000070007c003f001fc00fe00fe01fc03f007c007000000000000000000000000000 +2b9f:000000000000000000000000606070e079e03fc03fc01f801f800f000f000600060000000000000000000000 +2ba0:000000000000000000300030103030307030fff0fff070003000100000000000000000000000000000000000 +2ba1:0000000000000000c000c000c080c0c0c0e0fff0fff000e000c0008000000000000000000000000000000000 +2ba2:0000000000000000100030007000fff0fff07030303010300030003000000000000000000000000000000000 +2ba3:0000000000000000008000c000e0fff0fff0c0e0c0c0c080c000c00000000000000000000000000000000000 +2ba4:000000000c001e003f007f800c000c000c000c000c000c000c000c000c000ff00ff000000000000000000000 +2ba5:00000000030007800fc01fe0030003000300030003000300030003000300ff00ff0000000000000000000000 +2ba6:000000000ff00ff00c000c000c000c000c000c000c000c000c007f803f001e000c0000000000000000000000 +2ba7:00000000ff00ff000300030003000300030003000300030003001fe00fc00780030000000000000000000000 +2ba8:00000000000000000000000000000800181038307ff0ffe07fc0380018000800000000000000000000000000 +2ba9:000000000000000000000000000001008180c1c0ffe07ff03fe001c001800100000000000000000000000000 +2baa:00000000000000000000000000000800180038007fc0ffe07ff0383018100800000000000000000000000000 +2bab:00000000000000000000000000000100018001c03fe07ff0ffe0c1c081800100000000000000000000000000 +2bac:0000000000000000000004000e001f003f807fc00e000e000e000e000e000700038000000000000000000000 +2bad:0000000000000000000004000e001f003f807fc00e000e000e000e000e001c00380000000000000000000000 +2bae:00000000000000000000038007000e000e000e000e000e007fc03f801f000e00040000000000000000000000 +2baf:0000000000000000000038001c000e000e000e000e000e007fc03f801f000e00040000000000000000000000 +2bb0:00000000011001b00150011005100d10151027f0402080404080270014000c00040000000000000000000000 +2bb1:000000008800d800a80088008a008b008a80fe404020201010200e4002800300020000000000000000000000 +2bb2:0000000004000c001400270040808040402027f015100d1005100110015001b0011000000000000000000000 +2bb3:000000000200030002800e40102020104020fe408a808b008a008800a800d800880000000000000000000000 +2bb4:0000000000000800140022004100e38022002200220023f012200a40062003f0000000000000000000000000 +2bb5:00000000000001000280044008201c70044004400440fc40448025004600fc00000000000000000000000000 +2bb6:00000000000003f006200a40122023f0220022002200e3804100220014000800000000000000000000000000 +2bb7:000000000000fc00460025004480fc400440044004401c700820044002800100000000000000000000000000 +2bb8:000000000600090010803fc04020f0f0108010801f80000000001f80108010801f8000000000000000000000 +2bb9:00000000000000000000000000000000fff0801086108f109990b0d0a0508010fff000000000000000000000 +2bba:000000000000000000001ff010101010ff9090909090909090909ff080808080ff8000000000000000000000 +2bbb:000000000000000000001ff01ff01ff0fff09ff09ff09ff09ff09ff080808080ff8000000000000000000000 +2bbc:000000000000000000001ff01ff01ff0fff0fff0fff0fff0fff0fff0ff80ff80ff8000000000000000000000 +2bbd:00000000000000000000fff08010a050909089108610861089109090a0508010fff000000000000000000000 +2bbe:00000000000000000e0031804040404091208a2084208a2091204040404031800e0000000000000000000000 +2bbf:000000000000000000001f803fc060606060d9b0c630c630d9b0606060603fc01f8000000000000000000000 +2bc0:0000000000000000000000003fc03fc03fc03fc03fc03fc03fc03fc03fc03fc0000000000000000000000000 +2bc1:00000000000000000000000006000f001f803fc07fe07fe03fc01f800f000600000000000000000000000000 +2bc2:00000000000000001f801f801f803fc03fc03fc07fe07fe07fe03fc01f800f00060000000000000000000000 +2bc3:0000000000000000000000000f001f803fc07fe07fe07fe07fe03fc01f800f00000000000000000000000000 +2bc4:0000000000000000000006001f803fc03fc07fe07fe0fff0fff07fe07fe03fc03fc01f800600000000000000 +2bc5:00000000000000000000060006000f000f001f801f803fc03fc07fe07fe0fff0fff000000000000000000000 +2bc6:00000000000000000000fff0fff07fe07fe03fc03fc01f801f800f000f000600060000000000000000000000 +2bc7:00000000000000000000003000f003f00ff03ff0fff0fff03ff00ff003f000f0003000000000000000000000 +2bc8:00000000000000000000c000f000fc00ff00ffc0fff0fff0ffc0ff00fc00f000c00000000000000000000000 +2bc9:000000000000000080108020824082808300820086008a009200a200c200fff0020007000880088008800700 +2bca:000000000000000000001f803fc07fe07fe0fff0fff000000000000000000000000000000000000000000000 +2bcb:00000000000000000000000000000000000000000000fff0fff07fe07fe03fc01f8000000000000000000000 +2bcc:00000000000000000000000004000e000e001f007fc0ffe07fc01f000e000e00040000000000000000000000 +2bcd:000000000000000000000000802060c07bc03f803f801f003f803f807bc060c0802000000000000000000000 +2bce:00000000000000000000000004000a000a00110060c0802060c011000a000a00040000000000000000000000 +2bcf:000000000000000000000000802060c05b40248020801100208024805b4060c0802000000000000000000000 +2bd0:00000000000000000000000004007fc0444044404040f1e04040444044407fc0040000000000000000000000 +2bd1:00000000000000000600090010802f4059a08310861086104020264010800900060000000000000000000000 +2bd2:00000000060006003fc03fc0060006003fc03fc0060006003fc03fc006000600060000000000000000000000 +2be8:0000000000000000040004000c000c00fc007c003c001c000c001c001c003800300000000000000000000000 +2be9:0000000000000000020002000300030003f003e003c0038003000380038001c000c000000000000000000000 +2bea:0000000000000000060006000d000d00fdf07c203c401c800d001c801e80394030c000000000000000000000 +2beb:0000000000000000060006000b000b00fbf043e023c013800b001380178029c030c000000000000000000000 +2bec:00000000000000000000084018c039c07bc0fff0fff07bc039c018c008400000000000000000000000000000 +2bed:00000000000006000f001f803fc07fe006000f001f803fc07fe0060006000600060000000000000000000000 +2bee:00000000000000000000084018c039c07bc0fff0fff07bc039c018c008400000000000000000000000000000 +2bef:00000000000006000600060006007fe03fc01f800f0006007fe03fc01f800f00060000000000000000000000 +2bf9:00000000000000000000ffe0ffe000000000ffe0ffe0000071c08a2084208a2071c000000000000000000000 +2bfa:00000000000000000000000000000000000071c08a208a208a2071c000000000000000000000000000000000 +2bfb:0000000000000000000000000000000000006060909096909090606000000000000000000000000000000000 +2bfc:000000000000000000000e001100110011000e00000000000e001100110011000e0000000000000000000000 +2bfd:000000000000000004000e001f003f8004000400040004000e001100110011000e0000000000000000000000 +2bfe:000000000000000000000030003000300030003000300030003000300030fff0fff000000000000000000000 +2bff:00000000000000007fe07fe07fe00600060007e007e007e0060006007fe07fe07fe000000000000000000000 +30a0:0000000000000000000000000000000000000000000000000000003ffffc3ffffc0000000000003ffffc3ffffc000000000000000000000000000000000000000000 +30b3:00000000000000000000000007ffe007ffe000006000006000006000006000006000006000006000006007ffe007ffe0000060000000000000000000000000000000 +30c1:0000000000000000000003e003ffe003fc00000c00000c000ffff80ffff8000c0000180000180000300000300000600000c000000000000000000000000000000000 +30cb:00000000000000000000000001ff8001ff8000000000000000000000000000000000000000000000000000000007fff007fff0000000000000000000000000000000 +30cf:00000000000000000000000000000000030000038000c18000c1c000c0c001c0e00180600180600380700300300700300e0030000000000000000000000000000000 +30f3:0000000000000000000000000e000007000003800001c0000000000000300000700000e0000380001e0000f80007c000070000000000000000000000000000000000 +e0a0:e000e080e1c0e3e0e7f0e1c0e1c0e1c0e1c0e1c0e1c0e1c0c3c087800f003c00f000e000e000e000e000e000 +e0a1:00000000f000600060006000608060807f807f80000070f038603c603660336031e030e0306078f000000000 +e0a2:000000001f803fc030c030c030c030c030c030c07fe07fe079e070e070e079e079e079e079e07fe000000000 +e0a3:000000003f007f8060806000600060807f803f000000000070f038603c603660336031e030e078f000000000 +e0b0:8000c000e000f000f800fc00fe00ff00ff80ffc0ffe0ffe0ffc0ff80ff00fe00fc00f800f000e000c0008000 +e0b1:c0006000300018000c0006000300018000c0006000300030006000c00180030006000c00180030006000c000 +e0b2:00100030007000f001f003f007f00ff01ff03ff07ff07ff03ff01ff00ff007f003f001f000f0007000300010 +e0b3:0030006000c00180030006000c00180030006000c000c0006000300018000c0006000300018000c000600030 +e0b4:e000f800fe00ff00ff80ffc0ffc0ffc0ffe0ffe0ffe0ffe0ffe0ffe0ffc0ffc0ffc0ff80ff00fe00f800e000 +e0b5:f0000c000300018000c000600060006000300030003000300030003000600060006000c0018003000c00f000 +e0b6:007001f007f00ff01ff03ff03ff03ff07ff07ff07ff07ff07ff07ff03ff03ff03ff01ff00ff007f001f00070 +e0b7:00f003000c0018003000600060006000c000c000c000c000c000c000600060006000300018000c00030000f0 +e0b8:80008000c000c000e000e000f000f000f800f800fc00fc00fe00fe00ff00ff00ff80ff80ffc0ffc0ffe0ffe0 +e0b9:c000c0006000600030003000180018000c000c0006000600030003000180018000c000c00060006000300030 +e0ba:00100010003000300070007000f000f001f001f003f003f007f007f00ff00ff01ff01ff03ff03ff07ff07ff0 +e0bb:003000300060006000c000c00180018003000300060006000c000c00180018003000300060006000c000c000 +e0bc:ffe0ffe0ffc0ffc0ff80ff80ff00ff00fe00fe00fc00fc00f800f800f000f000e000e000c000c00080008000 +e0bd:003000300060006000c000c00180018003000300060006000c000c00180018003000300060006000c000c000 +e0be:7ff07ff03ff03ff01ff01ff00ff00ff007f007f003f003f001f001f000f000f0007000700030003000100010 +e0bf:c000c0006000600030003000180018000c000c0006000600030003000180018000c000c00060006000300030 +e0c0:8000f000e700fc00f8e0fff0ff00fc00ff00ff80ffe0fe60fc00ff80ff00f9c0f000f800ff00e3c0c0008000 +e0c1:8000f00067001c0018e007f003000c000300018001e006600c000380070019c0100018001f0063c0c0008000 +e0c2:001000f00e7003f071f0fff00ff003f00ff01ff07ff067f003f01ff00ff039f000f001f00ff03c7000300010 +e0c3:001000f00e6003807180fe000c0003000c0018007800660003001c000e003980008001800f803c6000300010 +e0c4:db20db0000000020d900d90000400100d840d80001000100d800d88000000100c100c80000000000c800c800 +e0c5:4db00db00000400009b009b02000080021b001b00800080001b011b000000800083001300000000001300130 +e0c6:0000ee60ee60ee000060ee00ee00eec00000e680e600e0800600e600e000e4000000e600e600e00008000000 +e0c7:0000677067700770600007700770377000001670067010700600067000700270000006700670007001000000 +e0c8:0000f000c000fe00ff80e000fe00ffe0ff00f000ff80e000fc00e000ff00fff0fc00e000ff00c000f8000000 +e0ca:000000f0003007f01ff0007007f07ff00ff000f01ff0007003f000700ff0fff003f000700ff0003001f00000 +e0cc:c000c000e000e000f000f000e180e180c3c0c3c007e007e0c3c0c3c0e180e180f000f000e000e000c000c000 +e0cd:c00040002000200010001000218021804240c24004200420c24042402180218010001000200020004000c000 +e0ce:ff00ff00fd80fd80fbc0fa60f4f0f4f0ecf0ee600ff00ff0ee60ecf0f4f0f4f0fa60fbc0fd80fd80ff00ff00 +e0cf:0000060006001f801f806f606060f0f0fff0ef706060b0d0dfb0ef70f0f0f9f0f9f0f9f079e039c019800900 +e0d0:00000000000071c08a208a208a2079e071c0000000000000000071c08a208a208a2079e071c0000000000000 +e0d1:fc00fc00ffe0fc20fc20ffe0ffe0ffe0ffe0fc00fc00fc00fc00ffe0fc20fc20ffe0ffe0ffe0ffe0fc00fc00 +e0d2:fff0ffe0ffe0ffc0ffc0ff80ff80ff00ff000000000000000000ff00ff00ff80ff80ffc0ffc0ffe0ffe0fff0 +e0d4:fff07ff07ff03ff03ff01ff01ff00ff00ff000000000000000000ff00ff01ff01ff03ff03ff07ff07ff0fff0 +e800:7770ddd0bbb0eee07770ddd0bbb0eee07770ddd0bbb0eee07770ddd0bbb0eee07770ddd0bbb0eee07770ddd0 +e801:bbb0eee07770ddd0bbb0eee07770ddd0bbb0eee07770ddd0bbb0eee07770ddd0bbb0eee07770ddd0bbb0eee0 +e802:8880222044401110888022204440111088802220444011108880222044401110888022204440111088802220 +e803:4440111088802220444011108880222044401110888022204440111088802220444011108880222044401110 +fb00:000000001ce0273023306310631063006300ffc0630063006300630063006300f78000000000000000000000 +fb01:000000000700098008c018c018c0180018003fc018c018c018c018c018c018c039e000000000000000000000 +fb02:000000000ec013c011c031c031c030c030c07fc030c030c030c030c030c030c079e000000000000000000000 +fb03:0000000019c0266026606660666066006600fff0666066606660666066606660f7f000000000000000000000 +fb04:0000000019a026e026e066e0666066606660ffe0666066606660666066606660f7f000000000000000000000 +fb05:000000000f00198018c030c030c030c030c073f030c030c030c030c030c030c079e000000000000000000000 +fb06:000000000000038007c00cc00cc07ec0c6c0c2f0e0c070c01cc00ec086c0c6c0fc7000000000000000000000 +fff9:0000aaa00000fbe082008200f3c082008200820000000000fbe082208220f3e08020802083e00000aaa00000 +fffa:0000aaa00000fbe082008200f3c082008200820000000000f9c082208220f3e08220822082200000aaa00000 +fffb:0000aaa00000fbe082008200f3c082008200820000000000fbc082208220f3c08220822083c00000aaa00000 +fffc:0000aaa00000fbe082008200f3c082008200820000000000f9e082008200f2008200820081e00000aaa00000 +fffd:06000f001f803fc040204f20d9b0c1b0c1b0c330c630c030c630462040203fc01f800f000600000000000000 +fffe:0000aaa00000fbe082008200f3c082008200820000000000fbe082008200f3c08200820083e00000aaa00000 +ffff:0000aaa00000fbe082008200f3c082008200820000000000fbe082008200f3c08200820082000000aaa00000 |
