Skip to contentSkip to conversation

MAINTAINERS: add status information

RFC Superseded Stephen Hemminger 2 participants 33 messages Jul 16, 2023 – Nov 3, 2023 Network drivers Page 1 of 2

lore
Share & tools
lore
#0 lore raw

RFC 1/1 MAINTAINERS: add status information

Add a new field S: which indicates the status of support for individual sub-trees. Almost everything is marked as supported but components without any maintainer are listed as Orphan.

---
 MAINTAINERS | 267 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 266 insertions(+), 1 deletion(-)
MAINTAINERS +266 -1
index 5bb8090ebe7e..d523ea34d4f3 100644
@@ -17,6 +17,16 @@ Descriptions of section entries:
 	X: Files and directories exclusion, same rules as F:
 	K: Keyword regex pattern to match content.
 	   One regex pattern per line. Multiple K: lines acceptable.
+	S: *Status*, one of the following:
+	   Supported:	Someone is actually paid to look after this.
+	   Maintained:	Someone actually looks after it.
+	   Odd Fixes:	It has a maintainer but they don't have time to do
+			much other than throw the odd patch in. See below..
+	   Orphan:	No current maintainer [but maybe you could take the
+			role as you write your new code].
+	   Obsolete:	Old code. Something tagged obsolete generally means
+			it has been replaced by a better system and you
+			should be using that.
 
 
 General Project Administration
@@ -25,44 +35,54 @@ General Project Administration
 Main Branch
 M: Thomas Monjalon <[email protected]>
 M: David Marchand <[email protected]>
+S: Supported
 T: git://dpdk.org/dpdk
 
 Next-net Tree
 M: Ferruh Yigit <[email protected]>
 M: Andrew Rybchenko <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 
 Next-net-brcm Tree
 M: Ajit Khaparde <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-brcm
 
 Next-net-intel Tree
 M: Qi Zhang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 
 Next-net-mrvl Tree
 M: Jerin Jacob <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 
 Next-net-mlx Tree
 M: Raslan Darawsheh <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mlx
 
 Next-virtio Tree
 M: Maxime Coquelin <[email protected]>
 M: Chenbo Xia <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-virtio
 
 Next-crypto Tree
 M: Akhil Goyal <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 
 Next-eventdev Tree
 M: Jerin Jacob <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 
 Next-baseband Tree
 M: Maxime Coquelin <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-baseband
 
 Stable Branches
@@ -70,17 +90,21 @@ M: Luca Boccassi <[email protected]>
 M: Kevin Traynor <[email protected]>
 M: Christian Ehrhardt <[email protected]>
 M: Xueming Li <[email protected]>
+S: Supported
 T: git://dpdk.org/dpdk-stable
 
 Security Issues
 M: [email protected]
+S: Supported
 
 Documentation (with overlaps)
 F: README
 F: doc/
+S: Supported
 
 Developers and Maintainers Tools
 M: Thomas Monjalon <[email protected]>
+S: Supported
 F: MAINTAINERS
 F: devtools/build-dict.sh
 F: devtools/check-abi.sh
@@ -110,7 +134,7 @@ F: .mailmap
 
 Build System
 M: Bruce Richardson <[email protected]>
-F: Makefile
+S: Maintained
 F: meson.build
 F: meson_options.txt
 F: config/
@@ -130,11 +154,13 @@ F: devtools/check-meson.py
 Public CI
 M: Aaron Conole <[email protected]>
 M: Michael Santana <[email protected]>
+S: Supported
 F: .github/workflows/build.yml
 F: .ci/
 
 Driver information
 M: Dmitry Kozlyuk <[email protected]>
+S: Maintained
 F: buildtools/coff.py
 F: buildtools/gen-pmdinfo-cfile.py
 F: buildtools/pmdinfogen.py
@@ -147,6 +173,7 @@ Environment Abstraction Layer
 T: git://dpdk.org/dpdk
 
 EAL API and common code
+S: Supported
 F: lib/eal/common/
 F: lib/eal/unix/
 F: lib/eal/include/
@@ -180,6 +207,7 @@ F: app/test/test_version.c
 Trace - EXPERIMENTAL
 M: Jerin Jacob <[email protected]>
 M: Sunil Kumar Kori <[email protected]>
+S: Supported
 F: lib/eal/include/rte_trace*.h
 F: lib/eal/common/eal_common_trace*.c
 F: lib/eal/common/eal_trace.h
@@ -188,6 +216,7 @@ F: app/test/test_trace*
 
 Memory Allocation
 M: Anatoly Burakov <[email protected]>
+S: Supported
 F: lib/eal/include/rte_fbarray.h
 F: lib/eal/include/rte_mem*
 F: lib/eal/include/rte_malloc.h
@@ -209,11 +238,13 @@ F: app/test/test_memzone.c
 
 Interrupt Subsystem
 M: Harman Kalra <[email protected]>
+S: Supported
 F: lib/eal/include/rte_epoll.h
 F: lib/eal/*/*interrupts.*
 F: app/test/test_interrupts.c
 
 Keep alive
+S: Orphan
 F: lib/eal/include/rte_keepalive.h
 F: lib/eal/common/rte_keepalive.c
 F: examples/l2fwd-keepalive/
@@ -221,6 +252,7 @@ F: doc/guides/sample_app_ug/keep_alive.rst
 
 Secondary process
 M: Anatoly Burakov <[email protected]>
+S: Maintained
 K: RTE_PROC_
 F: lib/eal/common/eal_common_proc.c
 F: doc/guides/prog_guide/multi_proc_support.rst
@@ -230,6 +262,7 @@ F: doc/guides/sample_app_ug/multi_process.rst
 
 Service Cores
 M: Harry van Haaren <[email protected]>
+S: Supported
 F: lib/eal/include/rte_service.h
 F: lib/eal/include/rte_service_component.h
 F: lib/eal/common/rte_service.c
@@ -240,44 +273,52 @@ F: doc/guides/sample_app_ug/service_cores.rst
 
 Bitops
 M: Joyce Kong <[email protected]>
+S: Supported
 F: lib/eal/include/rte_bitops.h
 F: app/test/test_bitops.c
 
 Bitmap
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 F: lib/eal/include/rte_bitmap.h
 F: app/test/test_bitmap.c
 
 MCSlock
 M: Honnappa Nagarahalli <[email protected]>
+S: Supported
 F: lib/eal/include/rte_mcslock.h
 F: app/test/test_mcslock.c
 
 Sequence Lock
 M: Mattias Rönnblom <[email protected]>
+S: Supported
 F: lib/eal/include/rte_seqcount.h
 F: lib/eal/include/rte_seqlock.h
 F: app/test/test_seqlock.c
 
 Ticketlock
 M: Joyce Kong <[email protected]>
+S: Supported
 F: lib/eal/include/rte_ticketlock.h
 F: app/test/test_ticketlock.c
 
 Pseudo-random Number Generation
 M: Mattias Rönnblom <[email protected]>
+S: Supported
 F: lib/eal/include/rte_random.h
 F: lib/eal/common/rte_random.c
 F: app/test/test_rand_perf.c
 
 ARM v7
 M: Ruifeng Wang <[email protected]>
+S: Supported
 F: config/arm/
 F: lib/eal/arm/
 X: lib/eal/arm/include/*_64.h
 
 ARM v8
 M: Ruifeng Wang <[email protected]>
+S: Supported
 F: config/arm/
 F: doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst
 F: lib/eal/arm/
@@ -291,12 +332,14 @@ F: examples/common/neon/
 
 LoongArch
 M: Min Zhou <[email protected]>
+S: Supported
 F: config/loongarch/
 F: doc/guides/linux_gsg/cross_build_dpdk_for_loongarch.rst
 F: lib/eal/loongarch/
 
 IBM POWER (alpha)
 M: David Christensen <[email protected]>
+S: Supported
 F: config/ppc/
 F: lib/eal/ppc/
 F: lib/*/*_altivec*
@@ -307,6 +350,7 @@ F: examples/common/altivec/
 
 RISC-V
 M: Stanislaw Kardach <[email protected]>
+S: Supported
 F: config/riscv/
 F: doc/guides/linux_gsg/cross_build_dpdk_for_riscv.rst
 F: lib/eal/riscv/
@@ -314,6 +358,7 @@ F: lib/eal/riscv/
 Intel x86
 M: Bruce Richardson <[email protected]>
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 F: config/x86/
 F: doc/guides/linux_gsg/nic_perf_intel_platform.rst
 F: buildtools/binutils-avx512-check.py
@@ -330,28 +375,34 @@ F: examples/*/*_avx*
 F: examples/common/sse/
 
 Linux EAL (with overlaps)
+S: Maintained
 F: lib/eal/linux/
 F: doc/guides/linux_gsg/
 
 Linux UIO
+S: Maintained
 F: drivers/bus/pci/linux/*uio*
 
 Linux VFIO
 M: Anatoly Burakov <[email protected]>
+S: Supported
 F: lib/eal/linux/*vfio*
 F: drivers/bus/pci/linux/*vfio*
 
 FreeBSD EAL (with overlaps)
 M: Bruce Richardson <[email protected]>
+S: Supported
 F: lib/eal/freebsd/
 F: doc/guides/freebsd_gsg/
 
 FreeBSD contigmem
 M: Bruce Richardson <[email protected]>
+S: Supported
 F: kernel/freebsd/contigmem/
 
 FreeBSD UIO
 M: Bruce Richardson <[email protected]>
+S: Supported
 F: kernel/freebsd/nic_uio/
 
 Windows support
@@ -359,12 +410,14 @@ M: Dmitry Kozlyuk <[email protected]>
 M: Narcisa Ana Maria Vasile <[email protected]>
 M: Dmitry Malloy <[email protected]>
 M: Pallavi Kadam <[email protected]>
+S: Supported
 F: lib/eal/windows/
 F: buildtools/map_to_win.py
 F: doc/guides/windows_gsg/
 
 Windows memory allocation
 M: Dmitry Kozlyuk <[email protected]>
+S: Supported
 F: lib/eal/windows/eal_hugepages.c
 F: lib/eal/windows/eal_mem*
 
@@ -372,10 +425,12 @@ F: lib/eal/windows/eal_mem*
 Core Libraries
 --------------
 T: git://dpdk.org/dpdk
+S: Maintained
 
 Memory pool
 M: Olivier Matz <[email protected]>
 M: Andrew Rybchenko <[email protected]>
+S: Supported
 F: lib/mempool/
 F: drivers/mempool/ring/
 F: doc/guides/prog_guide/mempool_lib.rst
@@ -385,6 +440,7 @@ F: app/test/test_func_reentrancy.c
 Ring queue
 M: Honnappa Nagarahalli <[email protected]>
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 F: lib/ring/
 F: doc/guides/prog_guide/ring_lib.rst
 F: app/test/test_ring*
@@ -392,6 +448,7 @@ F: app/test/test_func_reentrancy.c
 
 Stack
 M: Olivier Matz <[email protected]>
+S: Supported
 F: lib/stack/
 F: drivers/mempool/stack/
 F: app/test/test_stack*
@@ -399,6 +456,7 @@ F: doc/guides/prog_guide/stack_lib.rst
 
 Packet buffer
 M: Olivier Matz <[email protected]>
+S: Supported
 F: lib/mbuf/
 F: doc/guides/prog_guide/mbuf_lib.rst
 F: app/test/test_mbuf.c
@@ -407,6 +465,7 @@ Ethernet API
 M: Thomas Monjalon <[email protected]>
 M: Ferruh Yigit <[email protected]>
 M: Andrew Rybchenko <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/
 F: app/test/test_ethdev*
@@ -415,6 +474,7 @@ F: doc/guides/prog_guide/switch_representation.rst
 
 Flow API
 M: Ori Kam <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: app/test-pmd/cmdline_flow.c
 F: doc/guides/prog_guide/rte_flow.rst
@@ -422,18 +482,21 @@ F: lib/ethdev/rte_flow*
 
 Traffic Management API - EXPERIMENTAL
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_tm*
 F: app/test-pmd/cmdline_tm.*
 
 Traffic Metering and Policing API - EXPERIMENTAL
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_mtr*
 F: app/test-pmd/cmdline_mtr.*
 
 Baseband API
 M: Nicolas Chautru <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-baseband
 F: lib/bbdev/
 F: doc/guides/prog_guide/bbdev.rst
@@ -446,6 +509,7 @@ F: doc/guides/sample_app_ug/bbdev_app.rst
 Crypto API
 M: Akhil Goyal <[email protected]>
 M: Fan Zhang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: lib/cryptodev/
 F: app/test/test_cryptodev*
@@ -453,6 +517,7 @@ F: examples/l2fwd-crypto/
 
 Security API
 M: Akhil Goyal <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: lib/security/
 F: doc/guides/prog_guide/rte_security.rst
@@ -461,6 +526,7 @@ F: app/test/test_security*
 Compression API - EXPERIMENTAL
 M: Fan Zhang <[email protected]>
 M: Ashish Gupta <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: lib/compressdev/
 F: drivers/compress/
@@ -470,6 +536,7 @@ F: doc/guides/compressdevs/features/default.ini
 
 RegEx API - EXPERIMENTAL
 M: Ori Kam <[email protected]>
+S: Supported
 F: lib/regexdev/
 F: app/test-regex/
 F: doc/guides/prog_guide/regexdev.rst
@@ -477,6 +544,7 @@ F: doc/guides/regexdevs/features/default.ini
 
 Machine Learning device API - EXPERIMENTAL
 M: Srikanth Yalavarthi <[email protected]>
+S: Supported
 F: lib/mldev/
 F: doc/guides/prog_guide/mldev.rst
 F: app/test-mldev/
@@ -484,6 +552,7 @@ F: doc/guides/tools/testmldev.rst
 
 DMA device API - EXPERIMENTAL
 M: Chengwen Feng <[email protected]>
+S: Supported
 F: lib/dmadev/
 F: drivers/dma/skeleton/
 F: app/test/test_dmadev*
@@ -495,6 +564,7 @@ F: doc/guides/sample_app_ug/dma.rst
 
 General-Purpose Graphics Processing Unit (GPU) API - EXPERIMENTAL
 M: Elena Agostini <[email protected]>
+S: Supported
 F: lib/gpudev/
 F: doc/guides/prog_guide/gpudev.rst
 F: doc/guides/gpus/features/default.ini
@@ -502,6 +572,7 @@ F: app/test-gpudev/
 
 Eventdev API
 M: Jerin Jacob <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: lib/eventdev/
 F: drivers/event/skeleton/
@@ -510,6 +581,7 @@ F: examples/l3fwd/l3fwd_event*
 
 Eventdev Ethdev Rx Adapter API
 M: Naga Harish K S V <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: lib/eventdev/*eth_rx_adapter*
 F: app/test/test_event_eth_rx_adapter.c
@@ -517,6 +589,7 @@ F: doc/guides/prog_guide/event_ethernet_rx_adapter.rst
 
 Eventdev Ethdev Tx Adapter API
 M: Naga Harish K S V <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: lib/eventdev/*eth_tx_adapter*
 F: app/test/test_event_eth_tx_adapter.c
@@ -524,6 +597,7 @@ F: doc/guides/prog_guide/event_ethernet_tx_adapter.rst
 
 Eventdev Timer Adapter API
 M: Erik Gabriel Carrillo <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: lib/eventdev/*timer_adapter*
 F: app/test/test_event_timer_adapter.c
@@ -531,6 +605,7 @@ F: doc/guides/prog_guide/event_timer_adapter.rst
 
 Eventdev Crypto Adapter API
 M: Abhinandan Gujjar <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: lib/eventdev/*crypto_adapter*
 F: app/test/test_event_crypto_adapter.c
@@ -539,6 +614,7 @@ F: doc/guides/prog_guide/event_crypto_adapter.rst
 Raw device API
 M: Sachin Saxena <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 F: lib/rawdev/
 F: drivers/raw/skeleton/
 F: app/test/test_rawdev.c
@@ -551,11 +627,13 @@ Memory Pool Drivers
 Bucket memory pool
 M: Artem V. Andreev <[email protected]>
 M: Andrew Rybchenko <[email protected]>
+S: Supported
 F: drivers/mempool/bucket/
 
 Marvell cnxk
 M: Ashwin Sekhar T K <[email protected]>
 M: Pavan Nikhilesh <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/mempool/cnxk/
 F: doc/guides/mempool/cnxk.rst
@@ -567,20 +645,24 @@ Bus Drivers
 AMD CDX bus
 M: Nipun Gupta <[email protected]>
 M: Nikhil Agarwal <[email protected]>
+S: Supported
 F: drivers/bus/cdx/
 
 Auxiliary bus driver - EXPERIMENTAL
 M: Parav Pandit <[email protected]>
 M: Xueming Li <[email protected]>
+S: Supported
 F: drivers/bus/auxiliary/
 
 Intel FPGA bus
 M: Rosen Xu <[email protected]>
+S: Supported
 F: drivers/bus/ifpga/
 
 NXP buses
 M: Hemant Agrawal <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/common/dpaax/
 F: drivers/bus/dpaa/
 F: drivers/bus/fslmc/
@@ -588,36 +670,43 @@ F: drivers/bus/fslmc/
 PCI bus driver
 M: Chenbo Xia <[email protected]>
 M: Nipun Gupta <[email protected]>
+S: Supported
 F: drivers/bus/pci/
 
 Platform bus driver
 M: Tomasz Duszynski <[email protected]>
+S: Supported
 F: drivers/bus/platform/
 
 VDEV bus driver
+S: Maintained
 F: drivers/bus/vdev/
 F: app/test/test_vdev.c
 
 VMBUS bus driver
 M: Long Li <[email protected]>
+S: Supported
 F: drivers/bus/vmbus/
 
 
 Networking Drivers
 ------------------
 M: Ferruh Yigit <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: doc/guides/nics/features/default.ini
 
 Link bonding
 M: Chas Williams <[email protected]>
 M: Min Hu (Connor) <[email protected]>
+S: Supported
 F: drivers/net/bonding/
 F: doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
 F: app/test/test_link_bonding*
 F: examples/bond/
 
 Linux KNI
+S: Obsolete
 F: kernel/linux/kni/
 F: lib/kni/
 F: doc/guides/prog_guide/kernel_nic_interface.rst
@@ -625,12 +714,14 @@ F: app/test/test_kni.c
 
 Linux AF_PACKET
 M: John W. Linville <[email protected]>
+S: Odd Fixes
 F: drivers/net/af_packet/
 F: doc/guides/nics/features/afpacket.ini
 
 Linux AF_XDP
 M: Ciara Loftus <[email protected]>
 M: Qi Zhang <[email protected]>
+S: Supported
 F: drivers/net/af_xdp/
 F: doc/guides/nics/af_xdp.rst
 F: doc/guides/nics/features/af_xdp.ini
@@ -641,24 +732,28 @@ M: Shai Brandes <[email protected]>
 M: Evgeny Schemeilin <[email protected]>
 M: Igor Chauskin <[email protected]>
 M: Ron Beider <[email protected]>
+S: Supported
 F: drivers/net/ena/
 F: doc/guides/nics/ena.rst
 F: doc/guides/nics/features/ena.ini
 
 AMD axgbe
 M: Chandubabu Namburu <[email protected]>
+S: Supported
 F: drivers/net/axgbe/
 F: doc/guides/nics/axgbe.rst
 F: doc/guides/nics/features/axgbe.ini
 
 AMD Pensando ionic
 M: Andrew Boyer <[email protected]>
+S: Supported
 F: drivers/net/ionic/
 F: doc/guides/nics/ionic.rst
 F: doc/guides/nics/features/ionic.ini
 
 Marvell/Aquantia atlantic
 M: Igor Russkikh <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/atlantic/
 F: doc/guides/nics/atlantic.rst
@@ -668,6 +763,7 @@ Atomic Rules ARK
 M: Shepard Siegel <[email protected]>
 M: Ed Czeck <[email protected]>
 M: John Miller <[email protected]>
+S: Supported
 F: drivers/net/ark/
 F: doc/guides/nics/ark.rst
 F: doc/guides/nics/features/ark.ini
@@ -675,6 +771,7 @@ F: doc/guides/nics/features/ark.ini
 Broadcom bnxt
 M: Ajit Khaparde <[email protected]>
 M: Somnath Kotur <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-brcm
 F: drivers/net/bnxt/
 F: doc/guides/nics/bnxt.rst
@@ -683,6 +780,7 @@ F: doc/guides/nics/features/bnxt.ini
 Cavium ThunderX nicvf
 M: Jerin Jacob <[email protected]>
 M: Maciej Czekaj <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/thunderx/
 F: doc/guides/nics/thunderx.rst
@@ -690,6 +788,7 @@ F: doc/guides/nics/features/thunderx.ini
 
 Cavium OCTEON TX
 M: Harman Kalra <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/common/octeontx/
 F: drivers/mempool/octeontx/
@@ -699,6 +798,7 @@ F: doc/guides/nics/features/octeontx.ini
 
 Chelsio cxgbe
 M: Rahul Lakkireddy <[email protected]>
+S: Supported
 F: drivers/net/cxgbe/
 F: doc/guides/nics/cxgbe.rst
 F: doc/guides/nics/features/cxgbe.ini
@@ -706,6 +806,7 @@ F: doc/guides/nics/features/cxgbe.ini
 Cisco enic
 M: John Daley <[email protected]>
 M: Hyong Youb Kim <[email protected]>
+S: Supported
 F: drivers/net/enic/
 F: doc/guides/nics/enic.rst
 F: doc/guides/nics/features/enic.ini
@@ -715,6 +816,7 @@ M: Junfeng Guo <[email protected]>
 M: Jeroen de Borst <[email protected]>
 M: Rushil Gupta <[email protected]>
 M: Joshua Washington <[email protected]>
+S: Supported
 F: drivers/net/gve/
 F: doc/guides/nics/gve.rst
 F: doc/guides/nics/features/gve.ini
@@ -722,6 +824,7 @@ F: doc/guides/nics/features/gve.ini
 Hisilicon hns3
 M: Dongdong Liu <[email protected]>
 M: Yisen Zhuang <[email protected]>
+S: Supported
 F: drivers/net/hns3/
 F: doc/guides/nics/hns3.rst
 F: doc/guides/nics/features/hns3.ini
@@ -730,6 +833,7 @@ Huawei hinic
 M: Ziyang Xuan <[email protected]>
 M: Xiaoyun Wang <[email protected]>
 M: Guoyang Zhou <[email protected]>
+S: Supported
 F: drivers/net/hinic/
 F: doc/guides/nics/hinic.rst
 F: doc/guides/nics/features/hinic.ini
@@ -737,6 +841,7 @@ F: doc/guides/nics/features/hinic.ini
 Intel e1000
 M: Simei Su <[email protected]>
 M: Wenjun Wu <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/e1000/
 F: doc/guides/nics/e1000em.rst
@@ -747,6 +852,7 @@ F: doc/guides/nics/features/igb*.ini
 Intel ixgbe
 M: Qiming Yang <[email protected]>
 M: Wenjun Wu <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/ixgbe/
 F: doc/guides/nics/ixgbe.rst
@@ -756,6 +862,7 @@ F: doc/guides/nics/features/ixgbe*.ini
 Intel i40e
 M: Yuying Zhang <[email protected]>
 M: Beilei Xing <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/i40e/
 F: doc/guides/nics/i40e.rst
@@ -765,6 +872,7 @@ F: doc/guides/nics/features/i40e*.ini
 Intel fm10k
 M: Qi Zhang <[email protected]>
 M: Xiao Wang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/fm10k/
 F: doc/guides/nics/fm10k.rst
@@ -773,6 +881,7 @@ F: doc/guides/nics/features/fm10k*.ini
 Intel iavf
 M: Jingjing Wu <[email protected]>
 M: Beilei Xing <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/iavf/
 F: drivers/common/iavf/
@@ -781,6 +890,7 @@ F: doc/guides/nics/features/iavf*.ini
 Intel ice
 M: Qiming Yang <[email protected]>
 M: Qi Zhang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/ice/
 F: doc/guides/nics/ice.rst
@@ -789,6 +899,7 @@ F: doc/guides/nics/features/ice.ini
 Intel idpf
 M: Jingjing Wu <[email protected]>
 M: Beilei Xing <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/idpf/
 F: drivers/common/idpf/
@@ -798,6 +909,7 @@ F: doc/guides/nics/features/idpf.ini
 Intel cpfl - EXPERIMENTAL
 M: Yuying Zhang <[email protected]>
 M: Beilei Xing <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/cpfl/
 F: doc/guides/nics/cpfl.rst
@@ -806,6 +918,7 @@ F: doc/guides/nics/features/cpfl.ini
 Intel igc
 M: Junfeng Guo <[email protected]>
 M: Simei Su <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/igc/
 F: doc/guides/nics/igc.rst
@@ -814,6 +927,7 @@ F: doc/guides/nics/features/igc.ini
 Intel ipn3ke
 M: Rosen Xu <[email protected]>
 T: git://dpdk.org/next/dpdk-next-net-intel
+S: Supported
 F: drivers/net/ipn3ke/
 F: doc/guides/nics/ipn3ke.rst
 F: doc/guides/nics/features/ipn3ke.ini
@@ -823,6 +937,7 @@ M: Nithin Dabilpuram <[email protected]>
 M: Kiran Kumar K <[email protected]>
 M: Sunil Kumar Kori <[email protected]>
 M: Satha Rao <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/common/cnxk/
 F: drivers/net/cnxk/
@@ -832,6 +947,7 @@ F: doc/guides/platform/cnxk.rst
 
 Marvell mvpp2
 M: Liron Himi <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/common/mvep/
 F: drivers/net/mvpp2/
@@ -841,6 +957,7 @@ F: doc/guides/nics/features/mvpp2.ini
 Marvell mvneta
 M: Zyta Szpak <[email protected]>
 M: Liron Himi <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/mvneta/
 F: doc/guides/nics/mvneta.rst
@@ -848,6 +965,7 @@ F: doc/guides/nics/features/mvneta.ini
 
 Marvell OCTEON TX EP - endpoint
 M: Vamsi Attunuru <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/octeon_ep/
 F: doc/guides/nics/features/octeon_ep.ini
@@ -856,6 +974,7 @@ F: doc/guides/nics/octeon_ep.rst
 NVIDIA mlx4
 M: Matan Azrad <[email protected]>
 M: Viacheslav Ovsiienko <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mlx
 F: drivers/net/mlx4/
 F: doc/guides/nics/mlx4.rst
@@ -866,6 +985,7 @@ M: Matan Azrad <[email protected]>
 M: Viacheslav Ovsiienko <[email protected]>
 M: Ori Kam <[email protected]>
 M: Suanming Mou <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mlx
 F: drivers/common/mlx5/
 F: drivers/net/mlx5/
@@ -875,23 +995,27 @@ F: doc/guides/nics/features/mlx5.ini
 
 Microsoft mana
 M: Long Li <[email protected]>
+S: Supported
 F: drivers/net/mana/
 F: doc/guides/nics/mana.rst
 F: doc/guides/nics/features/mana.ini
 
 Microsoft vdev_netvsc - EXPERIMENTAL
 M: Matan Azrad <[email protected]>
+S: Supported
 F: drivers/net/vdev_netvsc/
 F: doc/guides/nics/vdev_netvsc.rst
 
 Microsoft Hyper-V netvsc
 M: Long Li <[email protected]>
+S: Supported
 F: drivers/net/netvsc/
 F: doc/guides/nics/netvsc.rst
 F: doc/guides/nics/features/netvsc.ini
 
 Netcope nfb
 M: Martin Spinler <[email protected]>
+S: Supported
 F: drivers/net/nfb/
 F: doc/guides/nics/nfb.rst
 F: doc/guides/nics/features/nfb.ini
@@ -899,6 +1023,7 @@ F: doc/guides/nics/features/nfb.ini
 Netronome nfp
 M: Chaoyong He <[email protected]>
 M: Niklas Soderlund <[email protected]>
+S: Supported
 F: drivers/net/nfp/
 F: doc/guides/nics/nfp.rst
 F: doc/guides/nics/features/nfp*.ini
@@ -906,6 +1031,7 @@ F: doc/guides/nics/features/nfp*.ini
 NXP dpaa
 M: Hemant Agrawal <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/mempool/dpaa/
 F: drivers/net/dpaa/
 F: doc/guides/nics/dpaa.rst
@@ -914,6 +1040,7 @@ F: doc/guides/nics/features/dpaa.ini
 NXP dpaa2
 M: Hemant Agrawal <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/mempool/dpaa2/
 F: drivers/net/dpaa2/
 F: doc/guides/nics/dpaa2.rst
@@ -922,6 +1049,7 @@ F: doc/guides/nics/features/dpaa2.ini
 NXP enetc
 M: Gagandeep Singh <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/net/enetc/
 F: doc/guides/nics/enetc.rst
 F: doc/guides/nics/features/enetc.ini
@@ -929,18 +1057,21 @@ F: doc/guides/nics/features/enetc.ini
 NXP enetfec - EXPERIMENTAL
 M: Apeksha Gupta <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/net/enetfec/
 F: doc/guides/nics/enetfec.rst
 F: doc/guides/nics/features/enetfec.ini
 
 NXP pfe
 M: Gagandeep Singh <[email protected]>
+S: Supported
 F: doc/guides/nics/pfe.rst
 F: drivers/net/pfe/
 F: doc/guides/nics/features/pfe.ini
 
 Marvell QLogic bnx2x
 M: Julien Aube <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/bnx2x/
 F: doc/guides/nics/bnx2x.rst
@@ -949,6 +1080,7 @@ F: doc/guides/nics/features/bnx2x*.ini
 Marvell QLogic qede PMD
 M: Devendra Singh Rawat <[email protected]>
 M: Alok Prasad <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/qede/
 F: doc/guides/nics/qede.rst
@@ -956,6 +1088,7 @@ F: doc/guides/nics/features/qede*.ini
 
 Solarflare sfc_efx
 M: Andrew Rybchenko <[email protected]>
+S: Supported
 F: drivers/common/sfc_efx/
 F: drivers/net/sfc/
 F: doc/guides/nics/sfc_efx.rst
@@ -963,6 +1096,7 @@ F: doc/guides/nics/features/sfc.ini
 
 Wangxun ngbe
 M: Jiawen Wu <[email protected]>
+S: Supported
 F: drivers/net/ngbe/
 F: doc/guides/nics/ngbe.rst
 F: doc/guides/nics/features/ngbe.ini
@@ -970,12 +1104,14 @@ F: doc/guides/nics/features/ngbe.ini
 Wangxun txgbe
 M: Jiawen Wu <[email protected]>
 M: Jian Wang <[email protected]>
+S: Supported
 F: drivers/net/txgbe/
 F: doc/guides/nics/txgbe.rst
 F: doc/guides/nics/features/txgbe.ini
 
 VMware vmxnet3
 M: Jochen Behrens <[email protected]>
+S: Supported
 F: drivers/net/vmxnet3/
 F: doc/guides/nics/vmxnet3.rst
 F: doc/guides/nics/features/vmxnet3.ini
@@ -983,6 +1119,7 @@ F: doc/guides/nics/features/vmxnet3.ini
 Vhost-user
 M: Maxime Coquelin <[email protected]>
 M: Chenbo Xia <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-virtio
 F: lib/vhost/
 F: doc/guides/prog_guide/vhost_lib.rst
@@ -997,6 +1134,7 @@ F: doc/guides/sample_app_ug/vdpa.rst
 Vhost PMD
 M: Maxime Coquelin <[email protected]>
 M: Chenbo Xia <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-virtio
 F: drivers/net/vhost/
 F: doc/guides/nics/vhost.rst
@@ -1005,6 +1143,7 @@ F: doc/guides/nics/features/vhost.ini
 Virtio PMD
 M: Maxime Coquelin <[email protected]>
 M: Chenbo Xia <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-virtio
 F: drivers/net/virtio/
 F: doc/guides/nics/virtio.rst
@@ -1013,26 +1152,31 @@ F: doc/guides/nics/features/virtio*.ini
 Wind River AVP
 M: Steven Webster <[email protected]>
 M: Matt Peters <[email protected]>
+S: Supported
 F: drivers/net/avp/
 F: doc/guides/nics/avp.rst
 F: doc/guides/nics/features/avp.ini
 
 PCAP PMD
+S: Orphan
 F: drivers/net/pcap/
 F: doc/guides/nics/pcap_ring.rst
 F: doc/guides/nics/features/pcap.ini
 
 Tap PMD
+S: Orphan
 F: drivers/net/tap/
 F: doc/guides/nics/tap.rst
 F: doc/guides/nics/features/tap.ini
 
 KNI PMD
+S: Obsolete
 F: drivers/net/kni/
 F: doc/guides/nics/kni.rst
 
 Ring PMD
 M: Bruce Richardson <[email protected]>
+S: Supported
 F: drivers/net/ring/
 F: doc/guides/nics/pcap_ring.rst
 F: app/test/test_pmd_ring.c
@@ -1040,21 +1184,25 @@ F: app/test/test_pmd_ring_perf.c
 
 Null Networking PMD
 M: Tetsuya Mukawa <[email protected]>
+S: Supported
 F: drivers/net/null/
 
 Fail-safe PMD
 M: Gaetan Rivet <[email protected]>
+S: Supported
 F: drivers/net/failsafe/
 F: doc/guides/nics/fail_safe.rst
 F: doc/guides/nics/features/failsafe.ini
 
 Softnic PMD
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 F: drivers/net/softnic/
 F: doc/guides/nics/softnic.rst
 
 Memif PMD
 M: Jakub Grajciar <[email protected]>
+S: Supported
 F: drivers/net/memif/
 F: doc/guides/nics/memif.rst
 F: doc/guides/nics/features/memif.ini
@@ -1062,17 +1210,20 @@ F: doc/guides/nics/features/memif.ini
 
 Crypto Drivers
 --------------
+S: Maintained
 T: git://dpdk.org/next/dpdk-next-crypto
 F: doc/guides/cryptodevs/features/default.ini
 
 AMD CCP Crypto
 M: Sunil Uttarwar <[email protected]>
+S: Supported
 F: drivers/crypto/ccp/
 F: doc/guides/cryptodevs/ccp.rst
 F: doc/guides/cryptodevs/features/ccp.ini
 
 ARMv8 Crypto
 M: Ruifeng Wang <[email protected]>
+S: Supported
 F: drivers/crypto/armv8/
 F: doc/guides/cryptodevs/armv8.rst
 F: doc/guides/cryptodevs/features/armv8.ini
@@ -1081,12 +1232,14 @@ Broadcom FlexSparc
 M: Ajit Khaparde <[email protected]>
 M: Raveendra Padasalagi <[email protected]>
 M: Vikas Gupta <[email protected]>
+S: Supported
 F: drivers/crypto/bcmfs/
 F: doc/guides/cryptodevs/bcmfs.rst
 F: doc/guides/cryptodevs/features/bcmfs.ini
 
 Cavium OCTEON TX crypto
 M: Anoob Joseph <[email protected]>
+S: Supported
 F: drivers/common/cpt/
 F: drivers/crypto/octeontx/
 F: doc/guides/cryptodevs/octeontx.rst
@@ -1094,17 +1247,20 @@ F: doc/guides/cryptodevs/features/octeontx.ini
 
 Crypto Scheduler
 M: Kai Ji <[email protected]>
+S: Supported
 F: drivers/crypto/scheduler/
 F: doc/guides/cryptodevs/scheduler.rst
 
 HiSilicon UADK crypto
 M: Zhangfei Gao <[email protected]>
+S: Supported
 F: drivers/crypto/uadk/
 F: doc/guides/cryptodevs/uadk.rst
 F: doc/guides/cryptodevs/features/uadk.ini
 
 Intel QuickAssist
 M: Kai Ji <[email protected]>
+S: Supported
 F: drivers/crypto/qat/
 F: drivers/common/qat/
 F: doc/guides/cryptodevs/qat.rst
@@ -1113,6 +1269,7 @@ F: doc/guides/cryptodevs/features/qat.ini
 IPsec MB
 M: Kai Ji <[email protected]>
 M: Pablo de Lara <[email protected]>
+S: Supported
 F: drivers/crypto/ipsec_mb/
 F: doc/guides/cryptodevs/aesni_gcm.rst
 F: doc/guides/cryptodevs/aesni_mb.rst
@@ -1131,6 +1288,7 @@ Marvell cnxk crypto
 M: Ankur Dwivedi <[email protected]>
 M: Anoob Joseph <[email protected]>
 M: Tejasree Kondoj <[email protected]>
+S: Supported
 F: drivers/crypto/cnxk/
 F: doc/guides/cryptodevs/cnxk.rst
 F: doc/guides/cryptodevs/features/cn9k.ini
@@ -1139,6 +1297,7 @@ F: doc/guides/cryptodevs/features/cn10k.ini
 Marvell mvsam
 M: Michael Shamis <[email protected]>
 M: Liron Himi <[email protected]>
+S: Supported
 F: drivers/crypto/mvsam/
 F: doc/guides/cryptodevs/mvsam.rst
 F: doc/guides/cryptodevs/features/mvsam.ini
@@ -1146,18 +1305,21 @@ F: doc/guides/cryptodevs/features/mvsam.ini
 Marvell Nitrox
 M: Nagadheeraj Rottela <[email protected]>
 M: Srikanth Jampala <[email protected]>
+S: Supported
 F: drivers/crypto/nitrox/
 F: doc/guides/cryptodevs/nitrox.rst
 F: doc/guides/cryptodevs/features/nitrox.ini
 
 NVIDIA mlx5
 M: Matan Azrad <[email protected]>
+S: Supported
 F: drivers/crypto/mlx5/
 F: doc/guides/cryptodevs/mlx5.rst
 F: doc/guides/cryptodevs/features/mlx5.ini
 
 Null Crypto
 M: Kai Ji <[email protected]>
+S: Supported
 F: drivers/crypto/null/
 F: doc/guides/cryptodevs/null.rst
 F: doc/guides/cryptodevs/features/null.ini
@@ -1165,6 +1327,7 @@ F: doc/guides/cryptodevs/features/null.ini
 NXP CAAM JR
 M: Gagandeep Singh <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 F: drivers/crypto/caam_jr/
 F: doc/guides/cryptodevs/caam_jr.rst
 F: doc/guides/cryptodevs/features/caam_jr.ini
@@ -1172,6 +1335,7 @@ F: doc/guides/cryptodevs/features/caam_jr.ini
 NXP DPAA_SEC
 M: Gagandeep Singh <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 F: drivers/crypto/dpaa_sec/
 F: doc/guides/cryptodevs/dpaa_sec.rst
 F: doc/guides/cryptodevs/features/dpaa_sec.ini
@@ -1179,18 +1343,21 @@ F: doc/guides/cryptodevs/features/dpaa_sec.ini
 NXP DPAA2_SEC
 M: Gagandeep Singh <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 F: drivers/crypto/dpaa2_sec/
 F: doc/guides/cryptodevs/dpaa2_sec.rst
 F: doc/guides/cryptodevs/features/dpaa2_sec.ini
 
 OpenSSL
 M: Kai Ji <[email protected]>
+S: Supported
 F: drivers/crypto/openssl/
 F: doc/guides/cryptodevs/openssl.rst
 F: doc/guides/cryptodevs/features/openssl.ini
 
 Virtio
 M: Jay Zhou <[email protected]>
+S: Supported
 F: drivers/crypto/virtio/
 F: doc/guides/cryptodevs/virtio.rst
 F: doc/guides/cryptodevs/features/virtio.ini
@@ -1198,31 +1365,37 @@ F: doc/guides/cryptodevs/features/virtio.ini
 
 Compression Drivers
 -------------------
+S: Maintained
 T: git://dpdk.org/next/dpdk-next-crypto
 
 Cavium OCTEON TX zipvf
 M: Ashish Gupta <[email protected]>
+S: Supported
 F: drivers/compress/octeontx/
 F: doc/guides/compressdevs/octeontx.rst
 F: doc/guides/compressdevs/features/octeontx.ini
 
 Intel QuickAssist
 M: Kai Ji <[email protected]>
+S: Supported
 F: drivers/compress/qat/
 F: drivers/common/qat/
 
 ISA-L
 M: Lee Daly <[email protected]>
+S: Supported
 F: drivers/compress/isal/
 F: doc/guides/compressdevs/isal.rst
 F: doc/guides/compressdevs/features/isal.ini
 
 NVIDIA mlx5
 M: Matan Azrad <[email protected]>
+S: Supported
 F: drivers/compress/mlx5/
 
 ZLIB
 M: Sunila Sahu <[email protected]>
+S: Supported
 F: drivers/compress/zlib/
 F: doc/guides/compressdevs/zlib.rst
 F: doc/guides/compressdevs/features/zlib.ini
@@ -1234,34 +1407,40 @@ DMAdev Drivers
 Intel IDXD - EXPERIMENTAL
 M: Bruce Richardson <[email protected]>
 M: Kevin Laatz <[email protected]>
+S: Supported
 F: drivers/dma/idxd/
 F: doc/guides/dmadevs/idxd.rst
 
 Intel IOAT
 M: Bruce Richardson <[email protected]>
 M: Conor Walsh <[email protected]>
+S: Supported
 F: drivers/dma/ioat/
 F: doc/guides/dmadevs/ioat.rst
 
 HiSilicon DMA
 M: Chengwen Feng <[email protected]>
+S: Supported
 F: drivers/dma/hisilicon/
 F: doc/guides/dmadevs/hisilicon.rst
 
 Marvell CNXK DPI DMA
 M: Vamsi Attunuru <[email protected]>
+S: Supported
 F: drivers/dma/cnxk/
 F: doc/guides/dmadevs/cnxk.rst
 
 NXP DPAA DMA
 M: Gagandeep Singh <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/dma/dpaa/
 F: doc/guides/dmadevs/dpaa.rst
 
 NXP DPAA2 QDMA
 M: Gagandeep Singh <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 F: drivers/dma/dpaa2/
 F: doc/guides/dmadevs/dpaa2.rst
 
@@ -1271,12 +1450,14 @@ RegEx Drivers
 
 Marvell OCTEON CN9K regex
 M: Liron Himi <[email protected]>
+S: Supported
 F: drivers/regex/cn9k/
 F: doc/guides/regexdevs/cn9k.rst
 F: doc/guides/regexdevs/features/cn9k.ini
 
 NVIDIA mlx5
 M: Ori Kam <[email protected]>
+S: Supported
 F: drivers/regex/mlx5/
 F: doc/guides/regexdevs/mlx5.rst
 F: doc/guides/regexdevs/features/mlx5.ini
@@ -1287,6 +1468,7 @@ MLdev Drivers
 
 Marvell ML CNXK
 M: Srikanth Yalavarthi <[email protected]>
+S: Supported
 F: drivers/common/cnxk/hw/ml.h
 F: drivers/common/cnxk/roc_ml*
 F: drivers/ml/cnxk/
@@ -1299,6 +1481,7 @@ T: git://dpdk.org/next/dpdk-next-virtio
 
 Intel ifc
 M: Xiao Wang <[email protected]>
+S: Supported
 F: drivers/vdpa/ifc/
 F: doc/guides/vdpadevs/ifc.rst
 F: doc/guides/vdpadevs/features/ifcvf.ini
@@ -1306,12 +1489,14 @@ F: doc/guides/vdpadevs/features/ifcvf.ini
 NVIDIA mlx5 vDPA
 M: Matan Azrad <[email protected]>
 M: Viacheslav Ovsiienko <[email protected]>
+S: Supported
 F: drivers/vdpa/mlx5/
 F: doc/guides/vdpadevs/mlx5.rst
 F: doc/guides/vdpadevs/features/mlx5.ini
 
 Xilinx sfc vDPA
 M: Vijay Kumar Srivastava <[email protected]>
+S: Supported
 F: drivers/vdpa/sfc/
 F: doc/guides/vdpadevs/sfc.rst
 F: doc/guides/vdpadevs/features/sfc.ini
@@ -1320,42 +1505,50 @@ F: doc/guides/vdpadevs/features/sfc.ini
 Eventdev Drivers
 ----------------
 M: Jerin Jacob <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 
 Cavium OCTEON TX ssovf
 M: Jerin Jacob <[email protected]>
+S: Supported
 F: drivers/event/octeontx/
 F: doc/guides/eventdevs/octeontx.rst
 
 Cavium OCTEON TX timvf
 M: Pavan Nikhilesh <[email protected]>
+S: Supported
 F: drivers/event/octeontx/timvf_*
 
 Intel DLB2
 M: Timothy McDaniel <[email protected]>
+S: Supported
 F: drivers/event/dlb2/
 F: doc/guides/eventdevs/dlb2.rst
 
 Marvell cnxk
 M: Pavan Nikhilesh <[email protected]>
 M: Shijith Thotton <[email protected]>
+S: Supported
 F: drivers/event/cnxk/
 F: doc/guides/eventdevs/cnxk.rst
 
 NXP DPAA eventdev
 M: Hemant Agrawal <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/event/dpaa/
 F: doc/guides/eventdevs/dpaa.rst
 
 NXP DPAA2 eventdev
 M: Hemant Agrawal <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/event/dpaa2/
 F: doc/guides/eventdevs/dpaa2.rst
 
 Software Eventdev PMD
 M: Harry van Haaren <[email protected]>
+S: Supported
 F: drivers/event/sw/
 F: doc/guides/eventdevs/sw.rst
 F: examples/eventdev_pipeline/
@@ -1363,11 +1556,13 @@ F: doc/guides/sample_app_ug/eventdev_pipeline.rst
 
 Distributed Software Eventdev PMD
 M: Mattias Rönnblom <[email protected]>
+S: Supported
 F: drivers/event/dsw/
 F: doc/guides/eventdevs/dsw.rst
 
 Software OPDL Eventdev PMD
 M: Liang Ma <[email protected]>
+S: Supported
 M: Peter Mccarthy <[email protected]>
 F: drivers/event/opdl/
 F: doc/guides/eventdevs/opdl.rst
@@ -1378,6 +1573,7 @@ Baseband Drivers
 
 Intel baseband
 M: Nicolas Chautru <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-baseband
 F: drivers/baseband/turbo_sw/
 F: doc/guides/bbdevs/turbo_sw.rst
@@ -1397,6 +1593,7 @@ F: doc/guides/bbdevs/features/vrb1.ini
 
 Null baseband
 M: Nicolas Chautru <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-baseband
 F: drivers/baseband/null/
 F: doc/guides/bbdevs/null.rst
@@ -1405,6 +1602,7 @@ F: doc/guides/bbdevs/features/null.ini
 NXP LA12xx
 M: Gagandeep Singh <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-baseband
 F: drivers/baseband/la12xx/
 F: doc/guides/bbdevs/la12xx.rst
@@ -1416,6 +1614,7 @@ GPU Drivers
 
 NVIDIA CUDA
 M: Elena Agostini <[email protected]>
+S: Supported
 F: drivers/gpu/cuda/
 F: doc/guides/gpus/cuda.rst
 
@@ -1426,6 +1625,7 @@ Rawdev Drivers
 Intel FPGA
 M: Rosen Xu <[email protected]>
 M: Tianfei zhang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/raw/ifpga/
 F: doc/guides/rawdevs/ifpga.rst
@@ -1433,18 +1633,21 @@ F: doc/guides/rawdevs/ifpga.rst
 Marvell CNXK BPHY
 M: Jakub Palider <[email protected]>
 M: Tomasz Duszynski <[email protected]>
+S: Supported
 F: doc/guides/rawdevs/cnxk_bphy.rst
 F: drivers/raw/cnxk_bphy/
 
 Marvell CNXK GPIO
 M: Jakub Palider <[email protected]>
 M: Tomasz Duszynski <[email protected]>
+S: Supported
 F: doc/guides/rawdevs/cnxk_gpio.rst
 F: drivers/raw/cnxk_gpio/
 
 NTB
 M: Jingjing Wu <[email protected]>
 M: Junfeng Guo <[email protected]>
+S: Supported
 F: drivers/raw/ntb/
 F: doc/guides/rawdevs/ntb.rst
 F: examples/ntb/
@@ -1452,6 +1655,7 @@ F: doc/guides/sample_app_ug/ntb.rst
 
 NXP DPAA2 CMDIF
 M: Gagandeep Singh <[email protected]>
+S: Supported
 F: drivers/raw/dpaa2_cmdif/
 F: doc/guides/rawdevs/dpaa2_cmdif.rst
 
@@ -1461,12 +1665,14 @@ Packet processing
 
 Network headers
 M: Olivier Matz <[email protected]>
+S: Supported
 F: lib/net/
 F: app/test/test_cksum.c
 F: app/test/test_cksum_perf.c
 
 Packet CRC
 M: Jasvinder Singh <[email protected]>
+S: Supported
 F: lib/net/net_crc.h
 F: lib/net/rte_net_crc*
 F: lib/net/net_crc_avx512.c
@@ -1475,6 +1681,7 @@ F: app/test/test_crc.c
 
 IP fragmentation & reassembly
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 F: lib/ip_frag/
 F: doc/guides/prog_guide/ip_fragment_reassembly_lib.rst
 F: app/test/test_ipfrag.c
@@ -1486,16 +1693,19 @@ F: doc/guides/sample_app_ug/ip_reassembly.rst
 
 Generic Receive Offload - EXPERIMENTAL
 M: Jiayu Hu <[email protected]>
+S: Supported
 F: lib/gro/
 F: doc/guides/prog_guide/generic_receive_offload_lib.rst
 
 Generic Segmentation Offload
 M: Jiayu Hu <[email protected]>
+S: Supported
 F: lib/gso/
 F: doc/guides/prog_guide/generic_segmentation_offload_lib.rst
 
 IPsec
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: lib/ipsec/
 F: app/test/test_ipsec*
@@ -1506,12 +1716,14 @@ F: app/test-sad/
 PDCP - EXPERIMENTAL
 M: Anoob Joseph <[email protected]>
 M: Volodymyr Fialko <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: lib/pdcp/
 F: doc/guides/prog_guide/pdcp_lib.rst
 F: app/test/test_pdcp*
 
 Flow Classify - EXPERIMENTAL - UNMAINTAINED
+S: Orphan
 F: lib/flow_classify/
 F: app/test/test_flow_classify*
 F: doc/guides/prog_guide/flow_classify_lib.rst
@@ -1520,6 +1732,7 @@ F: doc/guides/sample_app_ug/flow_classify.rst
 
 Distributor
 M: David Hunt <[email protected]>
+S: Supported
 F: lib/distributor/
 F: doc/guides/prog_guide/packet_distrib_lib.rst
 F: app/test/test_distributor*
@@ -1528,6 +1741,7 @@ F: doc/guides/sample_app_ug/dist_app.rst
 
 Reorder
 M: Volodymyr Fialko <[email protected]>
+S: Supported
 F: lib/reorder/
 F: doc/guides/prog_guide/reorder_lib.rst
 F: app/test/test_reorder*
@@ -1536,6 +1750,7 @@ F: doc/guides/sample_app_ug/packet_ordering.rst
 
 Hierarchical scheduler
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 F: lib/sched/
 F: doc/guides/prog_guide/qos_framework.rst
 F: app/test/test_pie.c
@@ -1547,6 +1762,7 @@ F: doc/guides/sample_app_ug/qos_scheduler.rst
 Packet capture
 M: Reshma Pattan <[email protected]>
 M: Stephen Hemminger <[email protected]>
+S: Maintained
 F: lib/pdump/
 F: doc/guides/prog_guide/pdump_lib.rst
 F: app/test/test_pdump.*
@@ -1562,6 +1778,7 @@ F: doc/guides/tools/dumpcap.rst
 Packet Framework
 ----------------
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 F: lib/pipeline/
 F: lib/port/
 F: lib/table/
@@ -1579,6 +1796,7 @@ Algorithms
 
 ACL
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 F: lib/acl/
 F: doc/guides/prog_guide/packet_classif_access_ctrl.rst
 F: app/test-acl/
@@ -1587,6 +1805,7 @@ F: app/test/test_acl.*
 EFD
 M: Byron Marohn <[email protected]>
 M: Yipeng Wang <[email protected]>
+S: Supported
 F: lib/efd/
 F: doc/guides/prog_guide/efd_lib.rst
 F: app/test/test_efd*
@@ -1598,6 +1817,7 @@ M: Yipeng Wang <[email protected]>
 M: Sameh Gobriel <[email protected]>
 M: Bruce Richardson <[email protected]>
 M: Vladimir Medvedkin <[email protected]>
+S: Supported
 F: lib/hash/
 F: doc/guides/prog_guide/hash_lib.rst
 F: doc/guides/prog_guide/toeplitz_hash_lib.rst
@@ -1607,6 +1827,7 @@ F: app/test/test_func_reentrancy.c
 LPM
 M: Bruce Richardson <[email protected]>
 M: Vladimir Medvedkin <[email protected]>
+S: Supported
 F: lib/lpm/
 F: doc/guides/prog_guide/lpm*
 F: app/test/test_lpm*
@@ -1616,12 +1837,14 @@ F: app/test/test_xmmt_ops.h
 Membership - EXPERIMENTAL
 M: Yipeng Wang <[email protected]>
 M: Sameh Gobriel <[email protected]>
+S: Supported
 F: lib/member/
 F: doc/guides/prog_guide/member_lib.rst
 F: app/test/test_member*
 
 RIB/FIB
 M: Vladimir Medvedkin <[email protected]>
+S: Supported
 F: lib/rib/
 F: app/test/test_rib*
 F: lib/fib/
@@ -1630,6 +1853,7 @@ F: app/test-fib/
 
 Traffic metering
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 F: lib/meter/
 F: doc/guides/sample_app_ug/qos_scheduler.rst
 F: app/test/test_meter.c
@@ -1642,12 +1866,14 @@ Other libraries
 
 Configuration file
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 F: lib/cfgfile/
 F: app/test/test_cfgfile.c
 F: app/test/test_cfgfiles/
 
 Interactive command line
 M: Olivier Matz <[email protected]>
+S: Supported
 F: lib/cmdline/
 F: app/test-cmdline/
 F: app/test/test_cmdline*
@@ -1656,11 +1882,13 @@ F: doc/guides/sample_app_ug/cmd_line.rst
 
 Key/Value parsing
 M: Olivier Matz <[email protected]>
+S: Supported
 F: lib/kvargs/
 F: app/test/test_kvargs.c
 
 RCU
 M: Honnappa Nagarahalli <[email protected]>
+S: Supported
 F: lib/rcu/
 F: app/test/test_rcu*
 F: doc/guides/prog_guide/rcu_lib.rst
@@ -1668,11 +1896,13 @@ F: doc/guides/prog_guide/rcu_lib.rst
 PCI
 M: Chenbo Xia <[email protected]>
 M: Gaetan Rivet <[email protected]>
+S: Supported
 F: lib/pci/
 
 Power management
 M: Anatoly Burakov <[email protected]>
 M: David Hunt <[email protected]>
+S: Supported
 F: lib/power/
 F: doc/guides/prog_guide/power_man.rst
 F: app/test/test_power*
@@ -1683,6 +1913,7 @@ F: doc/guides/sample_app_ug/vm_power_management.rst
 
 Timers
 M: Erik Gabriel Carrillo <[email protected]>
+S: Supported
 F: lib/timer/
 F: doc/guides/prog_guide/timer_lib.rst
 F: app/test/test_timer*
@@ -1690,25 +1921,30 @@ F: examples/timer/
 F: doc/guides/sample_app_ug/timer.rst
 
 Job statistics
+S: Orphan
 F: lib/jobstats/
 F: examples/l2fwd-jobstats/
 F: doc/guides/sample_app_ug/l2_forward_job_stats.rst
 
 Metrics
+S: Orphan
 F: lib/metrics/
 F: app/test/test_metrics.c
 
 Bit-rate statistics
+S: Orphan
 F: lib/bitratestats/
 F: app/test/test_bitratestats.c
 
 Latency statistics
 M: Reshma Pattan <[email protected]>
+S: Supported
 F: lib/latencystats/
 F: app/test/test_latencystats.c
 
 Telemetry
 M: Ciara Power <[email protected]>
+S: Supported
 F: lib/telemetry/
 F: app/test/test_telemetry*
 F: usertools/dpdk-telemetry*
@@ -1716,6 +1952,7 @@ F: doc/guides/howto/telemetry.rst
 
 BPF
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 F: lib/bpf/
 F: examples/bpf/
 F: app/test/test_bpf.c
@@ -1727,6 +1964,7 @@ M: Jerin Jacob <[email protected]>
 M: Kiran Kumar K <[email protected]>
 M: Nithin Dabilpuram <[email protected]>
 M: Zhirun Yan <[email protected]>
+S: Supported
 F: lib/graph/
 F: doc/guides/prog_guide/graph_lib.rst
 F: app/test/test_graph*
@@ -1736,6 +1974,7 @@ F: doc/guides/sample_app_ug/l3_forward_graph.rst
 Nodes - EXPERIMENTAL
 M: Nithin Dabilpuram <[email protected]>
 M: Pavan Nikhilesh <[email protected]>
+S: Supported
 F: lib/node/
 
 
@@ -1743,6 +1982,7 @@ Test Applications
 -----------------
 
 Unit tests framework
+S: Maintained
 F: app/test/commands.c
 F: app/test/has_hugepage.py
 F: app/test/packet_burst_generator.c
@@ -1758,45 +1998,53 @@ F: app/test/virtual_pmd.h
 
 Sample packet helper functions for unit test
 M: Reshma Pattan <[email protected]>
+S: Supported
 F: app/test/sample_packet_forward.c
 F: app/test/sample_packet_forward.h
 
 Networking drivers testing tool
 M: Aman Singh <[email protected]>
 M: Yuying Zhang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: app/test-pmd/
 F: doc/guides/testpmd_app_ug/
 
 DMA device performance tool
 M: Cheng Jiang <[email protected]>
+S: Supported
 F: app/test-dma-perf/
 F: doc/guides/tools/dmaperf.rst
 
 Flow performance tool
 M: Wisam Jaddo <[email protected]>
+S: Supported
 F: app/test-flow-perf/
 F: doc/guides/tools/flow-perf.rst
 
 Security performance tool
 M: Anoob Joseph <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: app/test-security-perf/
 F: doc/guides/tools/securityperf.rst
 
 Compression performance test application
 T: git://dpdk.org/next/dpdk-next-crypto
+S: Orphan
 F: app/test-compress-perf/
 F: doc/guides/tools/comp_perf.rst
 
 Crypto performance test application
 M: Ciara Power <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: app/test-crypto-perf/
 F: doc/guides/tools/cryptoperf.rst
 
 Eventdev test application
 M: Jerin Jacob <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: app/test-eventdev/
 F: doc/guides/tools/testeventdev.rst
@@ -1806,12 +2054,14 @@ F: app/test/test_event_ring.c
 Procinfo tool
 M: Maryam Tahhan <[email protected]>
 M: Reshma Pattan <[email protected]>
+S: Supported
 F: app/proc-info/
 F: doc/guides/tools/proc_info.rst
 
 DTS
 M: Lijuan Tu <[email protected]>
 M: Juraj Linkeš <[email protected]>
+S: Supported
 F: dts/
 F: devtools/dts-check-format.sh
 F: doc/guides/tools/dts.rst
@@ -1821,77 +2071,92 @@ Other Example Applications
 --------------------------
 
 Ethtool example
+S: Orphan
 F: examples/ethtool/
 F: doc/guides/sample_app_ug/ethtool.rst
 
 FIPS validation example
 M: Brian Dooley <[email protected]>
 M: Gowrishankar Muthukrishnan <[email protected]>
+S: Supported
 F: examples/fips_validation/
 F: doc/guides/sample_app_ug/fips_validation.rst
 
 Flow filtering example
 M: Ori Kam <[email protected]>
+S: Supported
 F: examples/flow_filtering/
 F: doc/guides/sample_app_ug/flow_filtering.rst
 
 Helloworld example
 M: Bruce Richardson <[email protected]>
+S: Supported
 F: examples/helloworld/
 F: doc/guides/sample_app_ug/hello_world.rst
 
 IPsec security gateway example
 M: Radu Nicolau <[email protected]>
 M: Akhil Goyal <[email protected]>
+S: Supported
 F: examples/ipsec-secgw/
 F: doc/guides/sample_app_ug/ipsec_secgw.rst
 
 IPv4 multicast example
+S: Orphan
 F: examples/ipv4_multicast/
 F: doc/guides/sample_app_ug/ipv4_multicast.rst
 
 L2 forwarding example
 M: Bruce Richardson <[email protected]>
+S: Supported
 F: examples/l2fwd/
 F: doc/guides/sample_app_ug/l2_forward_real_virtual.rst
 
 L2 forwarding with cache allocation example
 M: Tomasz Kantecki <[email protected]>
+S: Supported
 F: doc/guides/sample_app_ug/l2_forward_cat.rst
 F: examples/l2fwd-cat/
 
 L2 forwarding with eventdev example
 M: Sunil Kumar Kori <[email protected]>
 M: Pavan Nikhilesh <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: examples/l2fwd-event/
 F: doc/guides/sample_app_ug/l2_forward_event.rst
 
 L3 forwarding example
+S: Maintained
 F: examples/l3fwd/
 F: doc/guides/sample_app_ug/l3_forward.rst
 
 Link status interrupt example
+S: Maintained
 F: examples/link_status_interrupt/
 F: doc/guides/sample_app_ug/link_status_intr.rst
 
 PTP client example
 M: Kirill Rybalchenko <[email protected]>
+S: Supported
 F: examples/ptpclient/
 
 Rx/Tx callbacks example
 M: Bruce Richardson <[email protected]>
 M: John McNamara <[email protected]>
+S: Supported
 F: examples/rxtx_callbacks/
 F: doc/guides/sample_app_ug/rxtx_callbacks.rst
 
 Skeleton example
 M: Bruce Richardson <[email protected]>
 M: John McNamara <[email protected]>
+S: Supported
 F: examples/skeleton/
 F: doc/guides/sample_app_ug/skeleton.rst
 
 VMDq examples
+S: Orphan
 F: examples/vmdq/
 F: doc/guides/sample_app_ug/vmdq_forwarding.rst
 F: examples/vmdq_dcb/
Signature · 1 line
2.39.2
#1 lore raw

PATCH v2 1/1 MAINTAINERS: add status information

Add a new field S: which indicates the status of support for individual sub-trees. Almost everything is marked as supported but components without any maintainer are listed as Orphan.

---
v2 - mark FreeBSD as Odd Fixes
- pipeline, table, port are marked as deprecated so should be Obsolete

 MAINTAINERS | 267 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 266 insertions(+), 1 deletion(-)
MAINTAINERS +266 -1
index 5bb8090ebe7e..7882a3c020bc 100644
@@ -17,6 +17,16 @@ Descriptions of section entries:
 	X: Files and directories exclusion, same rules as F:
 	K: Keyword regex pattern to match content.
 	   One regex pattern per line. Multiple K: lines acceptable.
+	S: *Status*, one of the following:
+	   Supported:	Someone is actually paid to look after this.
+	   Maintained:	Someone actually looks after it.
+	   Odd Fixes:	It has a maintainer but they don't have time to do
+			much other than throw the odd patch in. See below..
+	   Orphan:	No current maintainer [but maybe you could take the
+			role as you write your new code].
+	   Obsolete:	Old code. Something tagged obsolete generally means
+			it has been replaced by a better system and you
+			should be using that.
 
 
 General Project Administration
@@ -25,44 +35,54 @@ General Project Administration
 Main Branch
 M: Thomas Monjalon <[email protected]>
 M: David Marchand <[email protected]>
+S: Supported
 T: git://dpdk.org/dpdk
 
 Next-net Tree
 M: Ferruh Yigit <[email protected]>
 M: Andrew Rybchenko <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 
 Next-net-brcm Tree
 M: Ajit Khaparde <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-brcm
 
 Next-net-intel Tree
 M: Qi Zhang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 
 Next-net-mrvl Tree
 M: Jerin Jacob <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 
 Next-net-mlx Tree
 M: Raslan Darawsheh <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mlx
 
 Next-virtio Tree
 M: Maxime Coquelin <[email protected]>
 M: Chenbo Xia <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-virtio
 
 Next-crypto Tree
 M: Akhil Goyal <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 
 Next-eventdev Tree
 M: Jerin Jacob <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 
 Next-baseband Tree
 M: Maxime Coquelin <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-baseband
 
 Stable Branches
@@ -70,17 +90,21 @@ M: Luca Boccassi <[email protected]>
 M: Kevin Traynor <[email protected]>
 M: Christian Ehrhardt <[email protected]>
 M: Xueming Li <[email protected]>
+S: Supported
 T: git://dpdk.org/dpdk-stable
 
 Security Issues
 M: [email protected]
+S: Supported
 
 Documentation (with overlaps)
 F: README
 F: doc/
+S: Supported
 
 Developers and Maintainers Tools
 M: Thomas Monjalon <[email protected]>
+S: Supported
 F: MAINTAINERS
 F: devtools/build-dict.sh
 F: devtools/check-abi.sh
@@ -110,7 +134,7 @@ F: .mailmap
 
 Build System
 M: Bruce Richardson <[email protected]>
-F: Makefile
+S: Maintained
 F: meson.build
 F: meson_options.txt
 F: config/
@@ -130,11 +154,13 @@ F: devtools/check-meson.py
 Public CI
 M: Aaron Conole <[email protected]>
 M: Michael Santana <[email protected]>
+S: Supported
 F: .github/workflows/build.yml
 F: .ci/
 
 Driver information
 M: Dmitry Kozlyuk <[email protected]>
+S: Maintained
 F: buildtools/coff.py
 F: buildtools/gen-pmdinfo-cfile.py
 F: buildtools/pmdinfogen.py
@@ -147,6 +173,7 @@ Environment Abstraction Layer
 T: git://dpdk.org/dpdk
 
 EAL API and common code
+S: Supported
 F: lib/eal/common/
 F: lib/eal/unix/
 F: lib/eal/include/
@@ -180,6 +207,7 @@ F: app/test/test_version.c
 Trace - EXPERIMENTAL
 M: Jerin Jacob <[email protected]>
 M: Sunil Kumar Kori <[email protected]>
+S: Supported
 F: lib/eal/include/rte_trace*.h
 F: lib/eal/common/eal_common_trace*.c
 F: lib/eal/common/eal_trace.h
@@ -188,6 +216,7 @@ F: app/test/test_trace*
 
 Memory Allocation
 M: Anatoly Burakov <[email protected]>
+S: Supported
 F: lib/eal/include/rte_fbarray.h
 F: lib/eal/include/rte_mem*
 F: lib/eal/include/rte_malloc.h
@@ -209,11 +238,13 @@ F: app/test/test_memzone.c
 
 Interrupt Subsystem
 M: Harman Kalra <[email protected]>
+S: Supported
 F: lib/eal/include/rte_epoll.h
 F: lib/eal/*/*interrupts.*
 F: app/test/test_interrupts.c
 
 Keep alive
+S: Orphan
 F: lib/eal/include/rte_keepalive.h
 F: lib/eal/common/rte_keepalive.c
 F: examples/l2fwd-keepalive/
@@ -221,6 +252,7 @@ F: doc/guides/sample_app_ug/keep_alive.rst
 
 Secondary process
 M: Anatoly Burakov <[email protected]>
+S: Maintained
 K: RTE_PROC_
 F: lib/eal/common/eal_common_proc.c
 F: doc/guides/prog_guide/multi_proc_support.rst
@@ -230,6 +262,7 @@ F: doc/guides/sample_app_ug/multi_process.rst
 
 Service Cores
 M: Harry van Haaren <[email protected]>
+S: Supported
 F: lib/eal/include/rte_service.h
 F: lib/eal/include/rte_service_component.h
 F: lib/eal/common/rte_service.c
@@ -240,44 +273,52 @@ F: doc/guides/sample_app_ug/service_cores.rst
 
 Bitops
 M: Joyce Kong <[email protected]>
+S: Supported
 F: lib/eal/include/rte_bitops.h
 F: app/test/test_bitops.c
 
 Bitmap
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 F: lib/eal/include/rte_bitmap.h
 F: app/test/test_bitmap.c
 
 MCSlock
 M: Honnappa Nagarahalli <[email protected]>
+S: Supported
 F: lib/eal/include/rte_mcslock.h
 F: app/test/test_mcslock.c
 
 Sequence Lock
 M: Mattias Rönnblom <[email protected]>
+S: Supported
 F: lib/eal/include/rte_seqcount.h
 F: lib/eal/include/rte_seqlock.h
 F: app/test/test_seqlock.c
 
 Ticketlock
 M: Joyce Kong <[email protected]>
+S: Supported
 F: lib/eal/include/rte_ticketlock.h
 F: app/test/test_ticketlock.c
 
 Pseudo-random Number Generation
 M: Mattias Rönnblom <[email protected]>
+S: Supported
 F: lib/eal/include/rte_random.h
 F: lib/eal/common/rte_random.c
 F: app/test/test_rand_perf.c
 
 ARM v7
 M: Ruifeng Wang <[email protected]>
+S: Supported
 F: config/arm/
 F: lib/eal/arm/
 X: lib/eal/arm/include/*_64.h
 
 ARM v8
 M: Ruifeng Wang <[email protected]>
+S: Supported
 F: config/arm/
 F: doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst
 F: lib/eal/arm/
@@ -291,12 +332,14 @@ F: examples/common/neon/
 
 LoongArch
 M: Min Zhou <[email protected]>
+S: Supported
 F: config/loongarch/
 F: doc/guides/linux_gsg/cross_build_dpdk_for_loongarch.rst
 F: lib/eal/loongarch/
 
 IBM POWER (alpha)
 M: David Christensen <[email protected]>
+S: Supported
 F: config/ppc/
 F: lib/eal/ppc/
 F: lib/*/*_altivec*
@@ -307,6 +350,7 @@ F: examples/common/altivec/
 
 RISC-V
 M: Stanislaw Kardach <[email protected]>
+S: Supported
 F: config/riscv/
 F: doc/guides/linux_gsg/cross_build_dpdk_for_riscv.rst
 F: lib/eal/riscv/
@@ -314,6 +358,7 @@ F: lib/eal/riscv/
 Intel x86
 M: Bruce Richardson <[email protected]>
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 F: config/x86/
 F: doc/guides/linux_gsg/nic_perf_intel_platform.rst
 F: buildtools/binutils-avx512-check.py
@@ -330,28 +375,34 @@ F: examples/*/*_avx*
 F: examples/common/sse/
 
 Linux EAL (with overlaps)
+S: Maintained
 F: lib/eal/linux/
 F: doc/guides/linux_gsg/
 
 Linux UIO
+S: Maintained
 F: drivers/bus/pci/linux/*uio*
 
 Linux VFIO
 M: Anatoly Burakov <[email protected]>
+S: Supported
 F: lib/eal/linux/*vfio*
 F: drivers/bus/pci/linux/*vfio*
 
 FreeBSD EAL (with overlaps)
 M: Bruce Richardson <[email protected]>
+S: Odd Fixes
 F: lib/eal/freebsd/
 F: doc/guides/freebsd_gsg/
 
 FreeBSD contigmem
 M: Bruce Richardson <[email protected]>
+S: Oddd Fixes
 F: kernel/freebsd/contigmem/
 
 FreeBSD UIO
 M: Bruce Richardson <[email protected]>
+S: Odd Fixes
 F: kernel/freebsd/nic_uio/
 
 Windows support
@@ -359,12 +410,14 @@ M: Dmitry Kozlyuk <[email protected]>
 M: Narcisa Ana Maria Vasile <[email protected]>
 M: Dmitry Malloy <[email protected]>
 M: Pallavi Kadam <[email protected]>
+S: Supported
 F: lib/eal/windows/
 F: buildtools/map_to_win.py
 F: doc/guides/windows_gsg/
 
 Windows memory allocation
 M: Dmitry Kozlyuk <[email protected]>
+S: Supported
 F: lib/eal/windows/eal_hugepages.c
 F: lib/eal/windows/eal_mem*
 
@@ -372,10 +425,12 @@ F: lib/eal/windows/eal_mem*
 Core Libraries
 --------------
 T: git://dpdk.org/dpdk
+S: Maintained
 
 Memory pool
 M: Olivier Matz <[email protected]>
 M: Andrew Rybchenko <[email protected]>
+S: Supported
 F: lib/mempool/
 F: drivers/mempool/ring/
 F: doc/guides/prog_guide/mempool_lib.rst
@@ -385,6 +440,7 @@ F: app/test/test_func_reentrancy.c
 Ring queue
 M: Honnappa Nagarahalli <[email protected]>
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 F: lib/ring/
 F: doc/guides/prog_guide/ring_lib.rst
 F: app/test/test_ring*
@@ -392,6 +448,7 @@ F: app/test/test_func_reentrancy.c
 
 Stack
 M: Olivier Matz <[email protected]>
+S: Supported
 F: lib/stack/
 F: drivers/mempool/stack/
 F: app/test/test_stack*
@@ -399,6 +456,7 @@ F: doc/guides/prog_guide/stack_lib.rst
 
 Packet buffer
 M: Olivier Matz <[email protected]>
+S: Supported
 F: lib/mbuf/
 F: doc/guides/prog_guide/mbuf_lib.rst
 F: app/test/test_mbuf.c
@@ -407,6 +465,7 @@ Ethernet API
 M: Thomas Monjalon <[email protected]>
 M: Ferruh Yigit <[email protected]>
 M: Andrew Rybchenko <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/
 F: app/test/test_ethdev*
@@ -415,6 +474,7 @@ F: doc/guides/prog_guide/switch_representation.rst
 
 Flow API
 M: Ori Kam <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: app/test-pmd/cmdline_flow.c
 F: doc/guides/prog_guide/rte_flow.rst
@@ -422,18 +482,21 @@ F: lib/ethdev/rte_flow*
 
 Traffic Management API - EXPERIMENTAL
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_tm*
 F: app/test-pmd/cmdline_tm.*
 
 Traffic Metering and Policing API - EXPERIMENTAL
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_mtr*
 F: app/test-pmd/cmdline_mtr.*
 
 Baseband API
 M: Nicolas Chautru <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-baseband
 F: lib/bbdev/
 F: doc/guides/prog_guide/bbdev.rst
@@ -446,6 +509,7 @@ F: doc/guides/sample_app_ug/bbdev_app.rst
 Crypto API
 M: Akhil Goyal <[email protected]>
 M: Fan Zhang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: lib/cryptodev/
 F: app/test/test_cryptodev*
@@ -453,6 +517,7 @@ F: examples/l2fwd-crypto/
 
 Security API
 M: Akhil Goyal <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: lib/security/
 F: doc/guides/prog_guide/rte_security.rst
@@ -461,6 +526,7 @@ F: app/test/test_security*
 Compression API - EXPERIMENTAL
 M: Fan Zhang <[email protected]>
 M: Ashish Gupta <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: lib/compressdev/
 F: drivers/compress/
@@ -470,6 +536,7 @@ F: doc/guides/compressdevs/features/default.ini
 
 RegEx API - EXPERIMENTAL
 M: Ori Kam <[email protected]>
+S: Supported
 F: lib/regexdev/
 F: app/test-regex/
 F: doc/guides/prog_guide/regexdev.rst
@@ -477,6 +544,7 @@ F: doc/guides/regexdevs/features/default.ini
 
 Machine Learning device API - EXPERIMENTAL
 M: Srikanth Yalavarthi <[email protected]>
+S: Supported
 F: lib/mldev/
 F: doc/guides/prog_guide/mldev.rst
 F: app/test-mldev/
@@ -484,6 +552,7 @@ F: doc/guides/tools/testmldev.rst
 
 DMA device API - EXPERIMENTAL
 M: Chengwen Feng <[email protected]>
+S: Supported
 F: lib/dmadev/
 F: drivers/dma/skeleton/
 F: app/test/test_dmadev*
@@ -495,6 +564,7 @@ F: doc/guides/sample_app_ug/dma.rst
 
 General-Purpose Graphics Processing Unit (GPU) API - EXPERIMENTAL
 M: Elena Agostini <[email protected]>
+S: Supported
 F: lib/gpudev/
 F: doc/guides/prog_guide/gpudev.rst
 F: doc/guides/gpus/features/default.ini
@@ -502,6 +572,7 @@ F: app/test-gpudev/
 
 Eventdev API
 M: Jerin Jacob <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: lib/eventdev/
 F: drivers/event/skeleton/
@@ -510,6 +581,7 @@ F: examples/l3fwd/l3fwd_event*
 
 Eventdev Ethdev Rx Adapter API
 M: Naga Harish K S V <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: lib/eventdev/*eth_rx_adapter*
 F: app/test/test_event_eth_rx_adapter.c
@@ -517,6 +589,7 @@ F: doc/guides/prog_guide/event_ethernet_rx_adapter.rst
 
 Eventdev Ethdev Tx Adapter API
 M: Naga Harish K S V <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: lib/eventdev/*eth_tx_adapter*
 F: app/test/test_event_eth_tx_adapter.c
@@ -524,6 +597,7 @@ F: doc/guides/prog_guide/event_ethernet_tx_adapter.rst
 
 Eventdev Timer Adapter API
 M: Erik Gabriel Carrillo <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: lib/eventdev/*timer_adapter*
 F: app/test/test_event_timer_adapter.c
@@ -531,6 +605,7 @@ F: doc/guides/prog_guide/event_timer_adapter.rst
 
 Eventdev Crypto Adapter API
 M: Abhinandan Gujjar <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: lib/eventdev/*crypto_adapter*
 F: app/test/test_event_crypto_adapter.c
@@ -539,6 +614,7 @@ F: doc/guides/prog_guide/event_crypto_adapter.rst
 Raw device API
 M: Sachin Saxena <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 F: lib/rawdev/
 F: drivers/raw/skeleton/
 F: app/test/test_rawdev.c
@@ -551,11 +627,13 @@ Memory Pool Drivers
 Bucket memory pool
 M: Artem V. Andreev <[email protected]>
 M: Andrew Rybchenko <[email protected]>
+S: Supported
 F: drivers/mempool/bucket/
 
 Marvell cnxk
 M: Ashwin Sekhar T K <[email protected]>
 M: Pavan Nikhilesh <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/mempool/cnxk/
 F: doc/guides/mempool/cnxk.rst
@@ -567,20 +645,24 @@ Bus Drivers
 AMD CDX bus
 M: Nipun Gupta <[email protected]>
 M: Nikhil Agarwal <[email protected]>
+S: Supported
 F: drivers/bus/cdx/
 
 Auxiliary bus driver - EXPERIMENTAL
 M: Parav Pandit <[email protected]>
 M: Xueming Li <[email protected]>
+S: Supported
 F: drivers/bus/auxiliary/
 
 Intel FPGA bus
 M: Rosen Xu <[email protected]>
+S: Supported
 F: drivers/bus/ifpga/
 
 NXP buses
 M: Hemant Agrawal <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/common/dpaax/
 F: drivers/bus/dpaa/
 F: drivers/bus/fslmc/
@@ -588,36 +670,43 @@ F: drivers/bus/fslmc/
 PCI bus driver
 M: Chenbo Xia <[email protected]>
 M: Nipun Gupta <[email protected]>
+S: Supported
 F: drivers/bus/pci/
 
 Platform bus driver
 M: Tomasz Duszynski <[email protected]>
+S: Supported
 F: drivers/bus/platform/
 
 VDEV bus driver
+S: Maintained
 F: drivers/bus/vdev/
 F: app/test/test_vdev.c
 
 VMBUS bus driver
 M: Long Li <[email protected]>
+S: Supported
 F: drivers/bus/vmbus/
 
 
 Networking Drivers
 ------------------
 M: Ferruh Yigit <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: doc/guides/nics/features/default.ini
 
 Link bonding
 M: Chas Williams <[email protected]>
 M: Min Hu (Connor) <[email protected]>
+S: Supported
 F: drivers/net/bonding/
 F: doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
 F: app/test/test_link_bonding*
 F: examples/bond/
 
 Linux KNI
+S: Obsolete
 F: kernel/linux/kni/
 F: lib/kni/
 F: doc/guides/prog_guide/kernel_nic_interface.rst
@@ -625,12 +714,14 @@ F: app/test/test_kni.c
 
 Linux AF_PACKET
 M: John W. Linville <[email protected]>
+S: Odd Fixes
 F: drivers/net/af_packet/
 F: doc/guides/nics/features/afpacket.ini
 
 Linux AF_XDP
 M: Ciara Loftus <[email protected]>
 M: Qi Zhang <[email protected]>
+S: Supported
 F: drivers/net/af_xdp/
 F: doc/guides/nics/af_xdp.rst
 F: doc/guides/nics/features/af_xdp.ini
@@ -641,24 +732,28 @@ M: Shai Brandes <[email protected]>
 M: Evgeny Schemeilin <[email protected]>
 M: Igor Chauskin <[email protected]>
 M: Ron Beider <[email protected]>
+S: Supported
 F: drivers/net/ena/
 F: doc/guides/nics/ena.rst
 F: doc/guides/nics/features/ena.ini
 
 AMD axgbe
 M: Chandubabu Namburu <[email protected]>
+S: Supported
 F: drivers/net/axgbe/
 F: doc/guides/nics/axgbe.rst
 F: doc/guides/nics/features/axgbe.ini
 
 AMD Pensando ionic
 M: Andrew Boyer <[email protected]>
+S: Supported
 F: drivers/net/ionic/
 F: doc/guides/nics/ionic.rst
 F: doc/guides/nics/features/ionic.ini
 
 Marvell/Aquantia atlantic
 M: Igor Russkikh <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/atlantic/
 F: doc/guides/nics/atlantic.rst
@@ -668,6 +763,7 @@ Atomic Rules ARK
 M: Shepard Siegel <[email protected]>
 M: Ed Czeck <[email protected]>
 M: John Miller <[email protected]>
+S: Supported
 F: drivers/net/ark/
 F: doc/guides/nics/ark.rst
 F: doc/guides/nics/features/ark.ini
@@ -675,6 +771,7 @@ F: doc/guides/nics/features/ark.ini
 Broadcom bnxt
 M: Ajit Khaparde <[email protected]>
 M: Somnath Kotur <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-brcm
 F: drivers/net/bnxt/
 F: doc/guides/nics/bnxt.rst
@@ -683,6 +780,7 @@ F: doc/guides/nics/features/bnxt.ini
 Cavium ThunderX nicvf
 M: Jerin Jacob <[email protected]>
 M: Maciej Czekaj <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/thunderx/
 F: doc/guides/nics/thunderx.rst
@@ -690,6 +788,7 @@ F: doc/guides/nics/features/thunderx.ini
 
 Cavium OCTEON TX
 M: Harman Kalra <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/common/octeontx/
 F: drivers/mempool/octeontx/
@@ -699,6 +798,7 @@ F: doc/guides/nics/features/octeontx.ini
 
 Chelsio cxgbe
 M: Rahul Lakkireddy <[email protected]>
+S: Supported
 F: drivers/net/cxgbe/
 F: doc/guides/nics/cxgbe.rst
 F: doc/guides/nics/features/cxgbe.ini
@@ -706,6 +806,7 @@ F: doc/guides/nics/features/cxgbe.ini
 Cisco enic
 M: John Daley <[email protected]>
 M: Hyong Youb Kim <[email protected]>
+S: Supported
 F: drivers/net/enic/
 F: doc/guides/nics/enic.rst
 F: doc/guides/nics/features/enic.ini
@@ -715,6 +816,7 @@ M: Junfeng Guo <[email protected]>
 M: Jeroen de Borst <[email protected]>
 M: Rushil Gupta <[email protected]>
 M: Joshua Washington <[email protected]>
+S: Supported
 F: drivers/net/gve/
 F: doc/guides/nics/gve.rst
 F: doc/guides/nics/features/gve.ini
@@ -722,6 +824,7 @@ F: doc/guides/nics/features/gve.ini
 Hisilicon hns3
 M: Dongdong Liu <[email protected]>
 M: Yisen Zhuang <[email protected]>
+S: Supported
 F: drivers/net/hns3/
 F: doc/guides/nics/hns3.rst
 F: doc/guides/nics/features/hns3.ini
@@ -730,6 +833,7 @@ Huawei hinic
 M: Ziyang Xuan <[email protected]>
 M: Xiaoyun Wang <[email protected]>
 M: Guoyang Zhou <[email protected]>
+S: Supported
 F: drivers/net/hinic/
 F: doc/guides/nics/hinic.rst
 F: doc/guides/nics/features/hinic.ini
@@ -737,6 +841,7 @@ F: doc/guides/nics/features/hinic.ini
 Intel e1000
 M: Simei Su <[email protected]>
 M: Wenjun Wu <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/e1000/
 F: doc/guides/nics/e1000em.rst
@@ -747,6 +852,7 @@ F: doc/guides/nics/features/igb*.ini
 Intel ixgbe
 M: Qiming Yang <[email protected]>
 M: Wenjun Wu <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/ixgbe/
 F: doc/guides/nics/ixgbe.rst
@@ -756,6 +862,7 @@ F: doc/guides/nics/features/ixgbe*.ini
 Intel i40e
 M: Yuying Zhang <[email protected]>
 M: Beilei Xing <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/i40e/
 F: doc/guides/nics/i40e.rst
@@ -765,6 +872,7 @@ F: doc/guides/nics/features/i40e*.ini
 Intel fm10k
 M: Qi Zhang <[email protected]>
 M: Xiao Wang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/fm10k/
 F: doc/guides/nics/fm10k.rst
@@ -773,6 +881,7 @@ F: doc/guides/nics/features/fm10k*.ini
 Intel iavf
 M: Jingjing Wu <[email protected]>
 M: Beilei Xing <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/iavf/
 F: drivers/common/iavf/
@@ -781,6 +890,7 @@ F: doc/guides/nics/features/iavf*.ini
 Intel ice
 M: Qiming Yang <[email protected]>
 M: Qi Zhang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/ice/
 F: doc/guides/nics/ice.rst
@@ -789,6 +899,7 @@ F: doc/guides/nics/features/ice.ini
 Intel idpf
 M: Jingjing Wu <[email protected]>
 M: Beilei Xing <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/idpf/
 F: drivers/common/idpf/
@@ -798,6 +909,7 @@ F: doc/guides/nics/features/idpf.ini
 Intel cpfl - EXPERIMENTAL
 M: Yuying Zhang <[email protected]>
 M: Beilei Xing <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/cpfl/
 F: doc/guides/nics/cpfl.rst
@@ -806,6 +918,7 @@ F: doc/guides/nics/features/cpfl.ini
 Intel igc
 M: Junfeng Guo <[email protected]>
 M: Simei Su <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/igc/
 F: doc/guides/nics/igc.rst
@@ -814,6 +927,7 @@ F: doc/guides/nics/features/igc.ini
 Intel ipn3ke
 M: Rosen Xu <[email protected]>
 T: git://dpdk.org/next/dpdk-next-net-intel
+S: Supported
 F: drivers/net/ipn3ke/
 F: doc/guides/nics/ipn3ke.rst
 F: doc/guides/nics/features/ipn3ke.ini
@@ -823,6 +937,7 @@ M: Nithin Dabilpuram <[email protected]>
 M: Kiran Kumar K <[email protected]>
 M: Sunil Kumar Kori <[email protected]>
 M: Satha Rao <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/common/cnxk/
 F: drivers/net/cnxk/
@@ -832,6 +947,7 @@ F: doc/guides/platform/cnxk.rst
 
 Marvell mvpp2
 M: Liron Himi <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/common/mvep/
 F: drivers/net/mvpp2/
@@ -841,6 +957,7 @@ F: doc/guides/nics/features/mvpp2.ini
 Marvell mvneta
 M: Zyta Szpak <[email protected]>
 M: Liron Himi <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/mvneta/
 F: doc/guides/nics/mvneta.rst
@@ -848,6 +965,7 @@ F: doc/guides/nics/features/mvneta.ini
 
 Marvell OCTEON TX EP - endpoint
 M: Vamsi Attunuru <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/octeon_ep/
 F: doc/guides/nics/features/octeon_ep.ini
@@ -856,6 +974,7 @@ F: doc/guides/nics/octeon_ep.rst
 NVIDIA mlx4
 M: Matan Azrad <[email protected]>
 M: Viacheslav Ovsiienko <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mlx
 F: drivers/net/mlx4/
 F: doc/guides/nics/mlx4.rst
@@ -866,6 +985,7 @@ M: Matan Azrad <[email protected]>
 M: Viacheslav Ovsiienko <[email protected]>
 M: Ori Kam <[email protected]>
 M: Suanming Mou <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mlx
 F: drivers/common/mlx5/
 F: drivers/net/mlx5/
@@ -875,23 +995,27 @@ F: doc/guides/nics/features/mlx5.ini
 
 Microsoft mana
 M: Long Li <[email protected]>
+S: Supported
 F: drivers/net/mana/
 F: doc/guides/nics/mana.rst
 F: doc/guides/nics/features/mana.ini
 
 Microsoft vdev_netvsc - EXPERIMENTAL
 M: Matan Azrad <[email protected]>
+S: Supported
 F: drivers/net/vdev_netvsc/
 F: doc/guides/nics/vdev_netvsc.rst
 
 Microsoft Hyper-V netvsc
 M: Long Li <[email protected]>
+S: Supported
 F: drivers/net/netvsc/
 F: doc/guides/nics/netvsc.rst
 F: doc/guides/nics/features/netvsc.ini
 
 Netcope nfb
 M: Martin Spinler <[email protected]>
+S: Supported
 F: drivers/net/nfb/
 F: doc/guides/nics/nfb.rst
 F: doc/guides/nics/features/nfb.ini
@@ -899,6 +1023,7 @@ F: doc/guides/nics/features/nfb.ini
 Netronome nfp
 M: Chaoyong He <[email protected]>
 M: Niklas Soderlund <[email protected]>
+S: Supported
 F: drivers/net/nfp/
 F: doc/guides/nics/nfp.rst
 F: doc/guides/nics/features/nfp*.ini
@@ -906,6 +1031,7 @@ F: doc/guides/nics/features/nfp*.ini
 NXP dpaa
 M: Hemant Agrawal <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/mempool/dpaa/
 F: drivers/net/dpaa/
 F: doc/guides/nics/dpaa.rst
@@ -914,6 +1040,7 @@ F: doc/guides/nics/features/dpaa.ini
 NXP dpaa2
 M: Hemant Agrawal <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/mempool/dpaa2/
 F: drivers/net/dpaa2/
 F: doc/guides/nics/dpaa2.rst
@@ -922,6 +1049,7 @@ F: doc/guides/nics/features/dpaa2.ini
 NXP enetc
 M: Gagandeep Singh <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/net/enetc/
 F: doc/guides/nics/enetc.rst
 F: doc/guides/nics/features/enetc.ini
@@ -929,18 +1057,21 @@ F: doc/guides/nics/features/enetc.ini
 NXP enetfec - EXPERIMENTAL
 M: Apeksha Gupta <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/net/enetfec/
 F: doc/guides/nics/enetfec.rst
 F: doc/guides/nics/features/enetfec.ini
 
 NXP pfe
 M: Gagandeep Singh <[email protected]>
+S: Supported
 F: doc/guides/nics/pfe.rst
 F: drivers/net/pfe/
 F: doc/guides/nics/features/pfe.ini
 
 Marvell QLogic bnx2x
 M: Julien Aube <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/bnx2x/
 F: doc/guides/nics/bnx2x.rst
@@ -949,6 +1080,7 @@ F: doc/guides/nics/features/bnx2x*.ini
 Marvell QLogic qede PMD
 M: Devendra Singh Rawat <[email protected]>
 M: Alok Prasad <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/qede/
 F: doc/guides/nics/qede.rst
@@ -956,6 +1088,7 @@ F: doc/guides/nics/features/qede*.ini
 
 Solarflare sfc_efx
 M: Andrew Rybchenko <[email protected]>
+S: Supported
 F: drivers/common/sfc_efx/
 F: drivers/net/sfc/
 F: doc/guides/nics/sfc_efx.rst
@@ -963,6 +1096,7 @@ F: doc/guides/nics/features/sfc.ini
 
 Wangxun ngbe
 M: Jiawen Wu <[email protected]>
+S: Supported
 F: drivers/net/ngbe/
 F: doc/guides/nics/ngbe.rst
 F: doc/guides/nics/features/ngbe.ini
@@ -970,12 +1104,14 @@ F: doc/guides/nics/features/ngbe.ini
 Wangxun txgbe
 M: Jiawen Wu <[email protected]>
 M: Jian Wang <[email protected]>
+S: Supported
 F: drivers/net/txgbe/
 F: doc/guides/nics/txgbe.rst
 F: doc/guides/nics/features/txgbe.ini
 
 VMware vmxnet3
 M: Jochen Behrens <[email protected]>
+S: Supported
 F: drivers/net/vmxnet3/
 F: doc/guides/nics/vmxnet3.rst
 F: doc/guides/nics/features/vmxnet3.ini
@@ -983,6 +1119,7 @@ F: doc/guides/nics/features/vmxnet3.ini
 Vhost-user
 M: Maxime Coquelin <[email protected]>
 M: Chenbo Xia <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-virtio
 F: lib/vhost/
 F: doc/guides/prog_guide/vhost_lib.rst
@@ -997,6 +1134,7 @@ F: doc/guides/sample_app_ug/vdpa.rst
 Vhost PMD
 M: Maxime Coquelin <[email protected]>
 M: Chenbo Xia <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-virtio
 F: drivers/net/vhost/
 F: doc/guides/nics/vhost.rst
@@ -1005,6 +1143,7 @@ F: doc/guides/nics/features/vhost.ini
 Virtio PMD
 M: Maxime Coquelin <[email protected]>
 M: Chenbo Xia <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-virtio
 F: drivers/net/virtio/
 F: doc/guides/nics/virtio.rst
@@ -1013,26 +1152,31 @@ F: doc/guides/nics/features/virtio*.ini
 Wind River AVP
 M: Steven Webster <[email protected]>
 M: Matt Peters <[email protected]>
+S: Supported
 F: drivers/net/avp/
 F: doc/guides/nics/avp.rst
 F: doc/guides/nics/features/avp.ini
 
 PCAP PMD
+S: Orphan
 F: drivers/net/pcap/
 F: doc/guides/nics/pcap_ring.rst
 F: doc/guides/nics/features/pcap.ini
 
 Tap PMD
+S: Orphan
 F: drivers/net/tap/
 F: doc/guides/nics/tap.rst
 F: doc/guides/nics/features/tap.ini
 
 KNI PMD
+S: Obsolete
 F: drivers/net/kni/
 F: doc/guides/nics/kni.rst
 
 Ring PMD
 M: Bruce Richardson <[email protected]>
+S: Supported
 F: drivers/net/ring/
 F: doc/guides/nics/pcap_ring.rst
 F: app/test/test_pmd_ring.c
@@ -1040,21 +1184,25 @@ F: app/test/test_pmd_ring_perf.c
 
 Null Networking PMD
 M: Tetsuya Mukawa <[email protected]>
+S: Supported
 F: drivers/net/null/
 
 Fail-safe PMD
 M: Gaetan Rivet <[email protected]>
+S: Supported
 F: drivers/net/failsafe/
 F: doc/guides/nics/fail_safe.rst
 F: doc/guides/nics/features/failsafe.ini
 
 Softnic PMD
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 F: drivers/net/softnic/
 F: doc/guides/nics/softnic.rst
 
 Memif PMD
 M: Jakub Grajciar <[email protected]>
+S: Supported
 F: drivers/net/memif/
 F: doc/guides/nics/memif.rst
 F: doc/guides/nics/features/memif.ini
@@ -1062,17 +1210,20 @@ F: doc/guides/nics/features/memif.ini
 
 Crypto Drivers
 --------------
+S: Maintained
 T: git://dpdk.org/next/dpdk-next-crypto
 F: doc/guides/cryptodevs/features/default.ini
 
 AMD CCP Crypto
 M: Sunil Uttarwar <[email protected]>
+S: Supported
 F: drivers/crypto/ccp/
 F: doc/guides/cryptodevs/ccp.rst
 F: doc/guides/cryptodevs/features/ccp.ini
 
 ARMv8 Crypto
 M: Ruifeng Wang <[email protected]>
+S: Supported
 F: drivers/crypto/armv8/
 F: doc/guides/cryptodevs/armv8.rst
 F: doc/guides/cryptodevs/features/armv8.ini
@@ -1081,12 +1232,14 @@ Broadcom FlexSparc
 M: Ajit Khaparde <[email protected]>
 M: Raveendra Padasalagi <[email protected]>
 M: Vikas Gupta <[email protected]>
+S: Supported
 F: drivers/crypto/bcmfs/
 F: doc/guides/cryptodevs/bcmfs.rst
 F: doc/guides/cryptodevs/features/bcmfs.ini
 
 Cavium OCTEON TX crypto
 M: Anoob Joseph <[email protected]>
+S: Supported
 F: drivers/common/cpt/
 F: drivers/crypto/octeontx/
 F: doc/guides/cryptodevs/octeontx.rst
@@ -1094,17 +1247,20 @@ F: doc/guides/cryptodevs/features/octeontx.ini
 
 Crypto Scheduler
 M: Kai Ji <[email protected]>
+S: Supported
 F: drivers/crypto/scheduler/
 F: doc/guides/cryptodevs/scheduler.rst
 
 HiSilicon UADK crypto
 M: Zhangfei Gao <[email protected]>
+S: Supported
 F: drivers/crypto/uadk/
 F: doc/guides/cryptodevs/uadk.rst
 F: doc/guides/cryptodevs/features/uadk.ini
 
 Intel QuickAssist
 M: Kai Ji <[email protected]>
+S: Supported
 F: drivers/crypto/qat/
 F: drivers/common/qat/
 F: doc/guides/cryptodevs/qat.rst
@@ -1113,6 +1269,7 @@ F: doc/guides/cryptodevs/features/qat.ini
 IPsec MB
 M: Kai Ji <[email protected]>
 M: Pablo de Lara <[email protected]>
+S: Supported
 F: drivers/crypto/ipsec_mb/
 F: doc/guides/cryptodevs/aesni_gcm.rst
 F: doc/guides/cryptodevs/aesni_mb.rst
@@ -1131,6 +1288,7 @@ Marvell cnxk crypto
 M: Ankur Dwivedi <[email protected]>
 M: Anoob Joseph <[email protected]>
 M: Tejasree Kondoj <[email protected]>
+S: Supported
 F: drivers/crypto/cnxk/
 F: doc/guides/cryptodevs/cnxk.rst
 F: doc/guides/cryptodevs/features/cn9k.ini
@@ -1139,6 +1297,7 @@ F: doc/guides/cryptodevs/features/cn10k.ini
 Marvell mvsam
 M: Michael Shamis <[email protected]>
 M: Liron Himi <[email protected]>
+S: Supported
 F: drivers/crypto/mvsam/
 F: doc/guides/cryptodevs/mvsam.rst
 F: doc/guides/cryptodevs/features/mvsam.ini
@@ -1146,18 +1305,21 @@ F: doc/guides/cryptodevs/features/mvsam.ini
 Marvell Nitrox
 M: Nagadheeraj Rottela <[email protected]>
 M: Srikanth Jampala <[email protected]>
+S: Supported
 F: drivers/crypto/nitrox/
 F: doc/guides/cryptodevs/nitrox.rst
 F: doc/guides/cryptodevs/features/nitrox.ini
 
 NVIDIA mlx5
 M: Matan Azrad <[email protected]>
+S: Supported
 F: drivers/crypto/mlx5/
 F: doc/guides/cryptodevs/mlx5.rst
 F: doc/guides/cryptodevs/features/mlx5.ini
 
 Null Crypto
 M: Kai Ji <[email protected]>
+S: Supported
 F: drivers/crypto/null/
 F: doc/guides/cryptodevs/null.rst
 F: doc/guides/cryptodevs/features/null.ini
@@ -1165,6 +1327,7 @@ F: doc/guides/cryptodevs/features/null.ini
 NXP CAAM JR
 M: Gagandeep Singh <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 F: drivers/crypto/caam_jr/
 F: doc/guides/cryptodevs/caam_jr.rst
 F: doc/guides/cryptodevs/features/caam_jr.ini
@@ -1172,6 +1335,7 @@ F: doc/guides/cryptodevs/features/caam_jr.ini
 NXP DPAA_SEC
 M: Gagandeep Singh <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 F: drivers/crypto/dpaa_sec/
 F: doc/guides/cryptodevs/dpaa_sec.rst
 F: doc/guides/cryptodevs/features/dpaa_sec.ini
@@ -1179,18 +1343,21 @@ F: doc/guides/cryptodevs/features/dpaa_sec.ini
 NXP DPAA2_SEC
 M: Gagandeep Singh <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 F: drivers/crypto/dpaa2_sec/
 F: doc/guides/cryptodevs/dpaa2_sec.rst
 F: doc/guides/cryptodevs/features/dpaa2_sec.ini
 
 OpenSSL
 M: Kai Ji <[email protected]>
+S: Supported
 F: drivers/crypto/openssl/
 F: doc/guides/cryptodevs/openssl.rst
 F: doc/guides/cryptodevs/features/openssl.ini
 
 Virtio
 M: Jay Zhou <[email protected]>
+S: Supported
 F: drivers/crypto/virtio/
 F: doc/guides/cryptodevs/virtio.rst
 F: doc/guides/cryptodevs/features/virtio.ini
@@ -1198,31 +1365,37 @@ F: doc/guides/cryptodevs/features/virtio.ini
 
 Compression Drivers
 -------------------
+S: Maintained
 T: git://dpdk.org/next/dpdk-next-crypto
 
 Cavium OCTEON TX zipvf
 M: Ashish Gupta <[email protected]>
+S: Supported
 F: drivers/compress/octeontx/
 F: doc/guides/compressdevs/octeontx.rst
 F: doc/guides/compressdevs/features/octeontx.ini
 
 Intel QuickAssist
 M: Kai Ji <[email protected]>
+S: Supported
 F: drivers/compress/qat/
 F: drivers/common/qat/
 
 ISA-L
 M: Lee Daly <[email protected]>
+S: Supported
 F: drivers/compress/isal/
 F: doc/guides/compressdevs/isal.rst
 F: doc/guides/compressdevs/features/isal.ini
 
 NVIDIA mlx5
 M: Matan Azrad <[email protected]>
+S: Supported
 F: drivers/compress/mlx5/
 
 ZLIB
 M: Sunila Sahu <[email protected]>
+S: Supported
 F: drivers/compress/zlib/
 F: doc/guides/compressdevs/zlib.rst
 F: doc/guides/compressdevs/features/zlib.ini
@@ -1234,34 +1407,40 @@ DMAdev Drivers
 Intel IDXD - EXPERIMENTAL
 M: Bruce Richardson <[email protected]>
 M: Kevin Laatz <[email protected]>
+S: Supported
 F: drivers/dma/idxd/
 F: doc/guides/dmadevs/idxd.rst
 
 Intel IOAT
 M: Bruce Richardson <[email protected]>
 M: Conor Walsh <[email protected]>
+S: Supported
 F: drivers/dma/ioat/
 F: doc/guides/dmadevs/ioat.rst
 
 HiSilicon DMA
 M: Chengwen Feng <[email protected]>
+S: Supported
 F: drivers/dma/hisilicon/
 F: doc/guides/dmadevs/hisilicon.rst
 
 Marvell CNXK DPI DMA
 M: Vamsi Attunuru <[email protected]>
+S: Supported
 F: drivers/dma/cnxk/
 F: doc/guides/dmadevs/cnxk.rst
 
 NXP DPAA DMA
 M: Gagandeep Singh <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/dma/dpaa/
 F: doc/guides/dmadevs/dpaa.rst
 
 NXP DPAA2 QDMA
 M: Gagandeep Singh <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 F: drivers/dma/dpaa2/
 F: doc/guides/dmadevs/dpaa2.rst
 
@@ -1271,12 +1450,14 @@ RegEx Drivers
 
 Marvell OCTEON CN9K regex
 M: Liron Himi <[email protected]>
+S: Supported
 F: drivers/regex/cn9k/
 F: doc/guides/regexdevs/cn9k.rst
 F: doc/guides/regexdevs/features/cn9k.ini
 
 NVIDIA mlx5
 M: Ori Kam <[email protected]>
+S: Supported
 F: drivers/regex/mlx5/
 F: doc/guides/regexdevs/mlx5.rst
 F: doc/guides/regexdevs/features/mlx5.ini
@@ -1287,6 +1468,7 @@ MLdev Drivers
 
 Marvell ML CNXK
 M: Srikanth Yalavarthi <[email protected]>
+S: Supported
 F: drivers/common/cnxk/hw/ml.h
 F: drivers/common/cnxk/roc_ml*
 F: drivers/ml/cnxk/
@@ -1299,6 +1481,7 @@ T: git://dpdk.org/next/dpdk-next-virtio
 
 Intel ifc
 M: Xiao Wang <[email protected]>
+S: Supported
 F: drivers/vdpa/ifc/
 F: doc/guides/vdpadevs/ifc.rst
 F: doc/guides/vdpadevs/features/ifcvf.ini
@@ -1306,12 +1489,14 @@ F: doc/guides/vdpadevs/features/ifcvf.ini
 NVIDIA mlx5 vDPA
 M: Matan Azrad <[email protected]>
 M: Viacheslav Ovsiienko <[email protected]>
+S: Supported
 F: drivers/vdpa/mlx5/
 F: doc/guides/vdpadevs/mlx5.rst
 F: doc/guides/vdpadevs/features/mlx5.ini
 
 Xilinx sfc vDPA
 M: Vijay Kumar Srivastava <[email protected]>
+S: Supported
 F: drivers/vdpa/sfc/
 F: doc/guides/vdpadevs/sfc.rst
 F: doc/guides/vdpadevs/features/sfc.ini
@@ -1320,42 +1505,50 @@ F: doc/guides/vdpadevs/features/sfc.ini
 Eventdev Drivers
 ----------------
 M: Jerin Jacob <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 
 Cavium OCTEON TX ssovf
 M: Jerin Jacob <[email protected]>
+S: Supported
 F: drivers/event/octeontx/
 F: doc/guides/eventdevs/octeontx.rst
 
 Cavium OCTEON TX timvf
 M: Pavan Nikhilesh <[email protected]>
+S: Supported
 F: drivers/event/octeontx/timvf_*
 
 Intel DLB2
 M: Timothy McDaniel <[email protected]>
+S: Supported
 F: drivers/event/dlb2/
 F: doc/guides/eventdevs/dlb2.rst
 
 Marvell cnxk
 M: Pavan Nikhilesh <[email protected]>
 M: Shijith Thotton <[email protected]>
+S: Supported
 F: drivers/event/cnxk/
 F: doc/guides/eventdevs/cnxk.rst
 
 NXP DPAA eventdev
 M: Hemant Agrawal <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/event/dpaa/
 F: doc/guides/eventdevs/dpaa.rst
 
 NXP DPAA2 eventdev
 M: Hemant Agrawal <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/event/dpaa2/
 F: doc/guides/eventdevs/dpaa2.rst
 
 Software Eventdev PMD
 M: Harry van Haaren <[email protected]>
+S: Supported
 F: drivers/event/sw/
 F: doc/guides/eventdevs/sw.rst
 F: examples/eventdev_pipeline/
@@ -1363,11 +1556,13 @@ F: doc/guides/sample_app_ug/eventdev_pipeline.rst
 
 Distributed Software Eventdev PMD
 M: Mattias Rönnblom <[email protected]>
+S: Supported
 F: drivers/event/dsw/
 F: doc/guides/eventdevs/dsw.rst
 
 Software OPDL Eventdev PMD
 M: Liang Ma <[email protected]>
+S: Supported
 M: Peter Mccarthy <[email protected]>
 F: drivers/event/opdl/
 F: doc/guides/eventdevs/opdl.rst
@@ -1378,6 +1573,7 @@ Baseband Drivers
 
 Intel baseband
 M: Nicolas Chautru <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-baseband
 F: drivers/baseband/turbo_sw/
 F: doc/guides/bbdevs/turbo_sw.rst
@@ -1397,6 +1593,7 @@ F: doc/guides/bbdevs/features/vrb1.ini
 
 Null baseband
 M: Nicolas Chautru <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-baseband
 F: drivers/baseband/null/
 F: doc/guides/bbdevs/null.rst
@@ -1405,6 +1602,7 @@ F: doc/guides/bbdevs/features/null.ini
 NXP LA12xx
 M: Gagandeep Singh <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-baseband
 F: drivers/baseband/la12xx/
 F: doc/guides/bbdevs/la12xx.rst
@@ -1416,6 +1614,7 @@ GPU Drivers
 
 NVIDIA CUDA
 M: Elena Agostini <[email protected]>
+S: Supported
 F: drivers/gpu/cuda/
 F: doc/guides/gpus/cuda.rst
 
@@ -1426,6 +1625,7 @@ Rawdev Drivers
 Intel FPGA
 M: Rosen Xu <[email protected]>
 M: Tianfei zhang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/raw/ifpga/
 F: doc/guides/rawdevs/ifpga.rst
@@ -1433,18 +1633,21 @@ F: doc/guides/rawdevs/ifpga.rst
 Marvell CNXK BPHY
 M: Jakub Palider <[email protected]>
 M: Tomasz Duszynski <[email protected]>
+S: Supported
 F: doc/guides/rawdevs/cnxk_bphy.rst
 F: drivers/raw/cnxk_bphy/
 
 Marvell CNXK GPIO
 M: Jakub Palider <[email protected]>
 M: Tomasz Duszynski <[email protected]>
+S: Supported
 F: doc/guides/rawdevs/cnxk_gpio.rst
 F: drivers/raw/cnxk_gpio/
 
 NTB
 M: Jingjing Wu <[email protected]>
 M: Junfeng Guo <[email protected]>
+S: Supported
 F: drivers/raw/ntb/
 F: doc/guides/rawdevs/ntb.rst
 F: examples/ntb/
@@ -1452,6 +1655,7 @@ F: doc/guides/sample_app_ug/ntb.rst
 
 NXP DPAA2 CMDIF
 M: Gagandeep Singh <[email protected]>
+S: Supported
 F: drivers/raw/dpaa2_cmdif/
 F: doc/guides/rawdevs/dpaa2_cmdif.rst
 
@@ -1461,12 +1665,14 @@ Packet processing
 
 Network headers
 M: Olivier Matz <[email protected]>
+S: Supported
 F: lib/net/
 F: app/test/test_cksum.c
 F: app/test/test_cksum_perf.c
 
 Packet CRC
 M: Jasvinder Singh <[email protected]>
+S: Supported
 F: lib/net/net_crc.h
 F: lib/net/rte_net_crc*
 F: lib/net/net_crc_avx512.c
@@ -1475,6 +1681,7 @@ F: app/test/test_crc.c
 
 IP fragmentation & reassembly
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 F: lib/ip_frag/
 F: doc/guides/prog_guide/ip_fragment_reassembly_lib.rst
 F: app/test/test_ipfrag.c
@@ -1486,16 +1693,19 @@ F: doc/guides/sample_app_ug/ip_reassembly.rst
 
 Generic Receive Offload - EXPERIMENTAL
 M: Jiayu Hu <[email protected]>
+S: Supported
 F: lib/gro/
 F: doc/guides/prog_guide/generic_receive_offload_lib.rst
 
 Generic Segmentation Offload
 M: Jiayu Hu <[email protected]>
+S: Supported
 F: lib/gso/
 F: doc/guides/prog_guide/generic_segmentation_offload_lib.rst
 
 IPsec
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: lib/ipsec/
 F: app/test/test_ipsec*
@@ -1506,12 +1716,14 @@ F: app/test-sad/
 PDCP - EXPERIMENTAL
 M: Anoob Joseph <[email protected]>
 M: Volodymyr Fialko <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: lib/pdcp/
 F: doc/guides/prog_guide/pdcp_lib.rst
 F: app/test/test_pdcp*
 
 Flow Classify - EXPERIMENTAL - UNMAINTAINED
+S: Orphan
 F: lib/flow_classify/
 F: app/test/test_flow_classify*
 F: doc/guides/prog_guide/flow_classify_lib.rst
@@ -1520,6 +1732,7 @@ F: doc/guides/sample_app_ug/flow_classify.rst
 
 Distributor
 M: David Hunt <[email protected]>
+S: Supported
 F: lib/distributor/
 F: doc/guides/prog_guide/packet_distrib_lib.rst
 F: app/test/test_distributor*
@@ -1528,6 +1741,7 @@ F: doc/guides/sample_app_ug/dist_app.rst
 
 Reorder
 M: Volodymyr Fialko <[email protected]>
+S: Supported
 F: lib/reorder/
 F: doc/guides/prog_guide/reorder_lib.rst
 F: app/test/test_reorder*
@@ -1536,6 +1750,7 @@ F: doc/guides/sample_app_ug/packet_ordering.rst
 
 Hierarchical scheduler
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 F: lib/sched/
 F: doc/guides/prog_guide/qos_framework.rst
 F: app/test/test_pie.c
@@ -1547,6 +1762,7 @@ F: doc/guides/sample_app_ug/qos_scheduler.rst
 Packet capture
 M: Reshma Pattan <[email protected]>
 M: Stephen Hemminger <[email protected]>
+S: Maintained
 F: lib/pdump/
 F: doc/guides/prog_guide/pdump_lib.rst
 F: app/test/test_pdump.*
@@ -1562,6 +1778,7 @@ F: doc/guides/tools/dumpcap.rst
 Packet Framework
 ----------------
 M: Cristian Dumitrescu <[email protected]>
+S: Obsolete
 F: lib/pipeline/
 F: lib/port/
 F: lib/table/
@@ -1579,6 +1796,7 @@ Algorithms
 
 ACL
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 F: lib/acl/
 F: doc/guides/prog_guide/packet_classif_access_ctrl.rst
 F: app/test-acl/
@@ -1587,6 +1805,7 @@ F: app/test/test_acl.*
 EFD
 M: Byron Marohn <[email protected]>
 M: Yipeng Wang <[email protected]>
+S: Supported
 F: lib/efd/
 F: doc/guides/prog_guide/efd_lib.rst
 F: app/test/test_efd*
@@ -1598,6 +1817,7 @@ M: Yipeng Wang <[email protected]>
 M: Sameh Gobriel <[email protected]>
 M: Bruce Richardson <[email protected]>
 M: Vladimir Medvedkin <[email protected]>
+S: Supported
 F: lib/hash/
 F: doc/guides/prog_guide/hash_lib.rst
 F: doc/guides/prog_guide/toeplitz_hash_lib.rst
@@ -1607,6 +1827,7 @@ F: app/test/test_func_reentrancy.c
 LPM
 M: Bruce Richardson <[email protected]>
 M: Vladimir Medvedkin <[email protected]>
+S: Supported
 F: lib/lpm/
 F: doc/guides/prog_guide/lpm*
 F: app/test/test_lpm*
@@ -1616,12 +1837,14 @@ F: app/test/test_xmmt_ops.h
 Membership - EXPERIMENTAL
 M: Yipeng Wang <[email protected]>
 M: Sameh Gobriel <[email protected]>
+S: Supported
 F: lib/member/
 F: doc/guides/prog_guide/member_lib.rst
 F: app/test/test_member*
 
 RIB/FIB
 M: Vladimir Medvedkin <[email protected]>
+S: Supported
 F: lib/rib/
 F: app/test/test_rib*
 F: lib/fib/
@@ -1630,6 +1853,7 @@ F: app/test-fib/
 
 Traffic metering
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 F: lib/meter/
 F: doc/guides/sample_app_ug/qos_scheduler.rst
 F: app/test/test_meter.c
@@ -1642,12 +1866,14 @@ Other libraries
 
 Configuration file
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 F: lib/cfgfile/
 F: app/test/test_cfgfile.c
 F: app/test/test_cfgfiles/
 
 Interactive command line
 M: Olivier Matz <[email protected]>
+S: Supported
 F: lib/cmdline/
 F: app/test-cmdline/
 F: app/test/test_cmdline*
@@ -1656,11 +1882,13 @@ F: doc/guides/sample_app_ug/cmd_line.rst
 
 Key/Value parsing
 M: Olivier Matz <[email protected]>
+S: Supported
 F: lib/kvargs/
 F: app/test/test_kvargs.c
 
 RCU
 M: Honnappa Nagarahalli <[email protected]>
+S: Supported
 F: lib/rcu/
 F: app/test/test_rcu*
 F: doc/guides/prog_guide/rcu_lib.rst
@@ -1668,11 +1896,13 @@ F: doc/guides/prog_guide/rcu_lib.rst
 PCI
 M: Chenbo Xia <[email protected]>
 M: Gaetan Rivet <[email protected]>
+S: Supported
 F: lib/pci/
 
 Power management
 M: Anatoly Burakov <[email protected]>
 M: David Hunt <[email protected]>
+S: Supported
 F: lib/power/
 F: doc/guides/prog_guide/power_man.rst
 F: app/test/test_power*
@@ -1683,6 +1913,7 @@ F: doc/guides/sample_app_ug/vm_power_management.rst
 
 Timers
 M: Erik Gabriel Carrillo <[email protected]>
+S: Supported
 F: lib/timer/
 F: doc/guides/prog_guide/timer_lib.rst
 F: app/test/test_timer*
@@ -1690,25 +1921,30 @@ F: examples/timer/
 F: doc/guides/sample_app_ug/timer.rst
 
 Job statistics
+S: Orphan
 F: lib/jobstats/
 F: examples/l2fwd-jobstats/
 F: doc/guides/sample_app_ug/l2_forward_job_stats.rst
 
 Metrics
+S: Orphan
 F: lib/metrics/
 F: app/test/test_metrics.c
 
 Bit-rate statistics
+S: Orphan
 F: lib/bitratestats/
 F: app/test/test_bitratestats.c
 
 Latency statistics
 M: Reshma Pattan <[email protected]>
+S: Supported
 F: lib/latencystats/
 F: app/test/test_latencystats.c
 
 Telemetry
 M: Ciara Power <[email protected]>
+S: Supported
 F: lib/telemetry/
 F: app/test/test_telemetry*
 F: usertools/dpdk-telemetry*
@@ -1716,6 +1952,7 @@ F: doc/guides/howto/telemetry.rst
 
 BPF
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 F: lib/bpf/
 F: examples/bpf/
 F: app/test/test_bpf.c
@@ -1727,6 +1964,7 @@ M: Jerin Jacob <[email protected]>
 M: Kiran Kumar K <[email protected]>
 M: Nithin Dabilpuram <[email protected]>
 M: Zhirun Yan <[email protected]>
+S: Supported
 F: lib/graph/
 F: doc/guides/prog_guide/graph_lib.rst
 F: app/test/test_graph*
@@ -1736,6 +1974,7 @@ F: doc/guides/sample_app_ug/l3_forward_graph.rst
 Nodes - EXPERIMENTAL
 M: Nithin Dabilpuram <[email protected]>
 M: Pavan Nikhilesh <[email protected]>
+S: Supported
 F: lib/node/
 
 
@@ -1743,6 +1982,7 @@ Test Applications
 -----------------
 
 Unit tests framework
+S: Maintained
 F: app/test/commands.c
 F: app/test/has_hugepage.py
 F: app/test/packet_burst_generator.c
@@ -1758,45 +1998,53 @@ F: app/test/virtual_pmd.h
 
 Sample packet helper functions for unit test
 M: Reshma Pattan <[email protected]>
+S: Supported
 F: app/test/sample_packet_forward.c
 F: app/test/sample_packet_forward.h
 
 Networking drivers testing tool
 M: Aman Singh <[email protected]>
 M: Yuying Zhang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: app/test-pmd/
 F: doc/guides/testpmd_app_ug/
 
 DMA device performance tool
 M: Cheng Jiang <[email protected]>
+S: Supported
 F: app/test-dma-perf/
 F: doc/guides/tools/dmaperf.rst
 
 Flow performance tool
 M: Wisam Jaddo <[email protected]>
+S: Supported
 F: app/test-flow-perf/
 F: doc/guides/tools/flow-perf.rst
 
 Security performance tool
 M: Anoob Joseph <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: app/test-security-perf/
 F: doc/guides/tools/securityperf.rst
 
 Compression performance test application
 T: git://dpdk.org/next/dpdk-next-crypto
+S: Orphan
 F: app/test-compress-perf/
 F: doc/guides/tools/comp_perf.rst
 
 Crypto performance test application
 M: Ciara Power <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: app/test-crypto-perf/
 F: doc/guides/tools/cryptoperf.rst
 
 Eventdev test application
 M: Jerin Jacob <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: app/test-eventdev/
 F: doc/guides/tools/testeventdev.rst
@@ -1806,12 +2054,14 @@ F: app/test/test_event_ring.c
 Procinfo tool
 M: Maryam Tahhan <[email protected]>
 M: Reshma Pattan <[email protected]>
+S: Supported
 F: app/proc-info/
 F: doc/guides/tools/proc_info.rst
 
 DTS
 M: Lijuan Tu <[email protected]>
 M: Juraj Linkeš <[email protected]>
+S: Supported
 F: dts/
 F: devtools/dts-check-format.sh
 F: doc/guides/tools/dts.rst
@@ -1821,77 +2071,92 @@ Other Example Applications
 --------------------------
 
 Ethtool example
+S: Orphan
 F: examples/ethtool/
 F: doc/guides/sample_app_ug/ethtool.rst
 
 FIPS validation example
 M: Brian Dooley <[email protected]>
 M: Gowrishankar Muthukrishnan <[email protected]>
+S: Supported
 F: examples/fips_validation/
 F: doc/guides/sample_app_ug/fips_validation.rst
 
 Flow filtering example
 M: Ori Kam <[email protected]>
+S: Supported
 F: examples/flow_filtering/
 F: doc/guides/sample_app_ug/flow_filtering.rst
 
 Helloworld example
 M: Bruce Richardson <[email protected]>
+S: Supported
 F: examples/helloworld/
 F: doc/guides/sample_app_ug/hello_world.rst
 
 IPsec security gateway example
 M: Radu Nicolau <[email protected]>
 M: Akhil Goyal <[email protected]>
+S: Supported
 F: examples/ipsec-secgw/
 F: doc/guides/sample_app_ug/ipsec_secgw.rst
 
 IPv4 multicast example
+S: Orphan
 F: examples/ipv4_multicast/
 F: doc/guides/sample_app_ug/ipv4_multicast.rst
 
 L2 forwarding example
 M: Bruce Richardson <[email protected]>
+S: Supported
 F: examples/l2fwd/
 F: doc/guides/sample_app_ug/l2_forward_real_virtual.rst
 
 L2 forwarding with cache allocation example
 M: Tomasz Kantecki <[email protected]>
+S: Supported
 F: doc/guides/sample_app_ug/l2_forward_cat.rst
 F: examples/l2fwd-cat/
 
 L2 forwarding with eventdev example
 M: Sunil Kumar Kori <[email protected]>
 M: Pavan Nikhilesh <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: examples/l2fwd-event/
 F: doc/guides/sample_app_ug/l2_forward_event.rst
 
 L3 forwarding example
+S: Maintained
 F: examples/l3fwd/
 F: doc/guides/sample_app_ug/l3_forward.rst
 
 Link status interrupt example
+S: Maintained
 F: examples/link_status_interrupt/
 F: doc/guides/sample_app_ug/link_status_intr.rst
 
 PTP client example
 M: Kirill Rybalchenko <[email protected]>
+S: Supported
 F: examples/ptpclient/
 
 Rx/Tx callbacks example
 M: Bruce Richardson <[email protected]>
 M: John McNamara <[email protected]>
+S: Supported
 F: examples/rxtx_callbacks/
 F: doc/guides/sample_app_ug/rxtx_callbacks.rst
 
 Skeleton example
 M: Bruce Richardson <[email protected]>
 M: John McNamara <[email protected]>
+S: Supported
 F: examples/skeleton/
 F: doc/guides/sample_app_ug/skeleton.rst
 
 VMDq examples
+S: Orphan
 F: examples/vmdq/
 F: doc/guides/sample_app_ug/vmdq_forwarding.rst
 F: examples/vmdq_dcb/
Signature · 1 line
2.39.2
#2 lore raw

PATCH v3 1/1 MAINTAINERS: add status information

In reply to Stephen Hemminger

Add a new field S: which indicates the status of support for individual sub-trees. Almost everything is marked as supported but components without any maintainer are listed as Orphan.

---
v3 - add back Makefile
mark vdev_netvsc as Odd Fixes

 MAINTAINERS | 266 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 266 insertions(+)
MAINTAINERS +266 -0
index 18bc05fccd0d..42cc29e6c475 100644
@@ -17,6 +17,16 @@ Descriptions of section entries:
 	X: Files and directories exclusion, same rules as F:
 	K: Keyword regex pattern to match content.
 	   One regex pattern per line. Multiple K: lines acceptable.
+	S: *Status*, one of the following:
+	   Supported:	Someone is actually paid to look after this.
+	   Maintained:	Someone actually looks after it.
+	   Odd Fixes:	It has a maintainer but they don't have time to do
+			much other than throw the odd patch in. See below..
+	   Orphan:	No current maintainer [but maybe you could take the
+			role as you write your new code].
+	   Obsolete:	Old code. Something tagged obsolete generally means
+			it has been replaced by a better system and you
+			should be using that.
 
 
 General Project Administration
@@ -25,44 +35,54 @@ General Project Administration
 Main Branch
 M: Thomas Monjalon <[email protected]>
 M: David Marchand <[email protected]>
+S: Supported
 T: git://dpdk.org/dpdk
 
 Next-net Tree
 M: Ferruh Yigit <[email protected]>
 M: Andrew Rybchenko <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 
 Next-net-brcm Tree
 M: Ajit Khaparde <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-brcm
 
 Next-net-intel Tree
 M: Qi Zhang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 
 Next-net-mrvl Tree
 M: Jerin Jacob <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 
 Next-net-mlx Tree
 M: Raslan Darawsheh <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mlx
 
 Next-virtio Tree
 M: Maxime Coquelin <[email protected]>
 M: Chenbo Xia <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-virtio
 
 Next-crypto Tree
 M: Akhil Goyal <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 
 Next-eventdev Tree
 M: Jerin Jacob <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 
 Next-baseband Tree
 M: Maxime Coquelin <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-baseband
 
 Stable Branches
@@ -70,17 +90,21 @@ M: Luca Boccassi <[email protected]>
 M: Kevin Traynor <[email protected]>
 M: Christian Ehrhardt <[email protected]>
 M: Xueming Li <[email protected]>
+S: Supported
 T: git://dpdk.org/dpdk-stable
 
 Security Issues
 M: [email protected]
+S: Supported
 
 Documentation (with overlaps)
 F: README
 F: doc/
+S: Supported
 
 Developers and Maintainers Tools
 M: Thomas Monjalon <[email protected]>
+S: Supported
 F: MAINTAINERS
 F: devtools/build-dict.sh
 F: devtools/check-abi.sh
@@ -110,6 +134,7 @@ F: .mailmap
 
 Build System
 M: Bruce Richardson <[email protected]>
+S: Supported
 F: Makefile
 F: meson.build
 F: meson_options.txt
@@ -130,11 +155,13 @@ F: devtools/check-meson.py
 Public CI
 M: Aaron Conole <[email protected]>
 M: Michael Santana <[email protected]>
+S: Supported
 F: .github/workflows/build.yml
 F: .ci/
 
 Driver information
 M: Dmitry Kozlyuk <[email protected]>
+S: Maintained
 F: buildtools/coff.py
 F: buildtools/gen-pmdinfo-cfile.py
 F: buildtools/pmdinfogen.py
@@ -147,6 +174,7 @@ Environment Abstraction Layer
 T: git://dpdk.org/dpdk
 
 EAL API and common code
+S: Supported
 F: lib/eal/common/
 F: lib/eal/unix/
 F: lib/eal/include/
@@ -180,6 +208,7 @@ F: app/test/test_version.c
 Trace - EXPERIMENTAL
 M: Jerin Jacob <[email protected]>
 M: Sunil Kumar Kori <[email protected]>
+S: Supported
 F: lib/eal/include/rte_trace*.h
 F: lib/eal/common/eal_common_trace*.c
 F: lib/eal/common/eal_trace.h
@@ -188,6 +217,7 @@ F: app/test/test_trace*
 
 Memory Allocation
 M: Anatoly Burakov <[email protected]>
+S: Supported
 F: lib/eal/include/rte_fbarray.h
 F: lib/eal/include/rte_mem*
 F: lib/eal/include/rte_malloc.h
@@ -209,11 +239,13 @@ F: app/test/test_memzone.c
 
 Interrupt Subsystem
 M: Harman Kalra <[email protected]>
+S: Supported
 F: lib/eal/include/rte_epoll.h
 F: lib/eal/*/*interrupts.*
 F: app/test/test_interrupts.c
 
 Keep alive
+S: Orphan
 F: lib/eal/include/rte_keepalive.h
 F: lib/eal/common/rte_keepalive.c
 F: examples/l2fwd-keepalive/
@@ -221,6 +253,7 @@ F: doc/guides/sample_app_ug/keep_alive.rst
 
 Secondary process
 M: Anatoly Burakov <[email protected]>
+S: Maintained
 K: RTE_PROC_
 F: lib/eal/common/eal_common_proc.c
 F: doc/guides/prog_guide/multi_proc_support.rst
@@ -230,6 +263,7 @@ F: doc/guides/sample_app_ug/multi_process.rst
 
 Service Cores
 M: Harry van Haaren <[email protected]>
+S: Supported
 F: lib/eal/include/rte_service.h
 F: lib/eal/include/rte_service_component.h
 F: lib/eal/common/rte_service.c
@@ -240,44 +274,52 @@ F: doc/guides/sample_app_ug/service_cores.rst
 
 Bitops
 M: Joyce Kong <[email protected]>
+S: Supported
 F: lib/eal/include/rte_bitops.h
 F: app/test/test_bitops.c
 
 Bitmap
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 F: lib/eal/include/rte_bitmap.h
 F: app/test/test_bitmap.c
 
 MCSlock
 M: Honnappa Nagarahalli <[email protected]>
+S: Supported
 F: lib/eal/include/rte_mcslock.h
 F: app/test/test_mcslock.c
 
 Sequence Lock
 M: Mattias Rönnblom <[email protected]>
+S: Supported
 F: lib/eal/include/rte_seqcount.h
 F: lib/eal/include/rte_seqlock.h
 F: app/test/test_seqlock.c
 
 Ticketlock
 M: Joyce Kong <[email protected]>
+S: Supported
 F: lib/eal/include/rte_ticketlock.h
 F: app/test/test_ticketlock.c
 
 Pseudo-random Number Generation
 M: Mattias Rönnblom <[email protected]>
+S: Supported
 F: lib/eal/include/rte_random.h
 F: lib/eal/common/rte_random.c
 F: app/test/test_rand_perf.c
 
 ARM v7
 M: Ruifeng Wang <[email protected]>
+S: Supported
 F: config/arm/
 F: lib/eal/arm/
 X: lib/eal/arm/include/*_64.h
 
 ARM v8
 M: Ruifeng Wang <[email protected]>
+S: Supported
 F: config/arm/
 F: doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst
 F: lib/eal/arm/
@@ -291,12 +333,14 @@ F: examples/common/neon/
 
 LoongArch
 M: Min Zhou <[email protected]>
+S: Supported
 F: config/loongarch/
 F: doc/guides/linux_gsg/cross_build_dpdk_for_loongarch.rst
 F: lib/eal/loongarch/
 
 IBM POWER (alpha)
 M: David Christensen <[email protected]>
+S: Supported
 F: config/ppc/
 F: lib/eal/ppc/
 F: lib/*/*_altivec*
@@ -307,6 +351,7 @@ F: examples/common/altivec/
 
 RISC-V
 M: Stanislaw Kardach <[email protected]>
+S: Supported
 F: config/riscv/
 F: doc/guides/linux_gsg/cross_build_dpdk_for_riscv.rst
 F: lib/eal/riscv/
@@ -314,6 +359,7 @@ F: lib/eal/riscv/
 Intel x86
 M: Bruce Richardson <[email protected]>
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 F: config/x86/
 F: doc/guides/linux_gsg/nic_perf_intel_platform.rst
 F: buildtools/binutils-avx512-check.py
@@ -330,28 +376,34 @@ F: examples/*/*_avx*
 F: examples/common/sse/
 
 Linux EAL (with overlaps)
+S: Supported
 F: lib/eal/linux/
 F: doc/guides/linux_gsg/
 
 Linux UIO
+S: Supported
 F: drivers/bus/pci/linux/*uio*
 
 Linux VFIO
 M: Anatoly Burakov <[email protected]>
+S: Supported
 F: lib/eal/linux/*vfio*
 F: drivers/bus/pci/linux/*vfio*
 
 FreeBSD EAL (with overlaps)
 M: Bruce Richardson <[email protected]>
+S: Odd Fixes
 F: lib/eal/freebsd/
 F: doc/guides/freebsd_gsg/
 
 FreeBSD contigmem
 M: Bruce Richardson <[email protected]>
+S: Oddd Fixes
 F: kernel/freebsd/contigmem/
 
 FreeBSD UIO
 M: Bruce Richardson <[email protected]>
+S: Odd Fixes
 F: kernel/freebsd/nic_uio/
 
 Windows support
@@ -359,12 +411,14 @@ M: Dmitry Kozlyuk <[email protected]>
 M: Narcisa Ana Maria Vasile <[email protected]>
 M: Dmitry Malloy <[email protected]>
 M: Pallavi Kadam <[email protected]>
+S: Supported
 F: lib/eal/windows/
 F: buildtools/map_to_win.py
 F: doc/guides/windows_gsg/
 
 Windows memory allocation
 M: Dmitry Kozlyuk <[email protected]>
+S: Supported
 F: lib/eal/windows/eal_hugepages.c
 F: lib/eal/windows/eal_mem*
 
@@ -372,10 +426,12 @@ F: lib/eal/windows/eal_mem*
 Core Libraries
 --------------
 T: git://dpdk.org/dpdk
+S: Maintained
 
 Memory pool
 M: Olivier Matz <[email protected]>
 M: Andrew Rybchenko <[email protected]>
+S: Supported
 F: lib/mempool/
 F: drivers/mempool/ring/
 F: doc/guides/prog_guide/mempool_lib.rst
@@ -385,6 +441,7 @@ F: app/test/test_func_reentrancy.c
 Ring queue
 M: Honnappa Nagarahalli <[email protected]>
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 F: lib/ring/
 F: doc/guides/prog_guide/ring_lib.rst
 F: app/test/test_ring*
@@ -392,6 +449,7 @@ F: app/test/test_func_reentrancy.c
 
 Stack
 M: Olivier Matz <[email protected]>
+S: Supported
 F: lib/stack/
 F: drivers/mempool/stack/
 F: app/test/test_stack*
@@ -399,6 +457,7 @@ F: doc/guides/prog_guide/stack_lib.rst
 
 Packet buffer
 M: Olivier Matz <[email protected]>
+S: Supported
 F: lib/mbuf/
 F: doc/guides/prog_guide/mbuf_lib.rst
 F: app/test/test_mbuf.c
@@ -407,6 +466,7 @@ Ethernet API
 M: Thomas Monjalon <[email protected]>
 M: Ferruh Yigit <[email protected]>
 M: Andrew Rybchenko <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/
 F: app/test/test_ethdev*
@@ -415,6 +475,7 @@ F: doc/guides/prog_guide/switch_representation.rst
 
 Flow API
 M: Ori Kam <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: app/test-pmd/cmdline_flow.c
 F: doc/guides/prog_guide/rte_flow.rst
@@ -422,18 +483,21 @@ F: lib/ethdev/rte_flow*
 
 Traffic Management API - EXPERIMENTAL
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_tm*
 F: app/test-pmd/cmdline_tm.*
 
 Traffic Metering and Policing API - EXPERIMENTAL
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: lib/ethdev/rte_mtr*
 F: app/test-pmd/cmdline_mtr.*
 
 Baseband API
 M: Nicolas Chautru <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-baseband
 F: lib/bbdev/
 F: doc/guides/prog_guide/bbdev.rst
@@ -446,6 +510,7 @@ F: doc/guides/sample_app_ug/bbdev_app.rst
 Crypto API
 M: Akhil Goyal <[email protected]>
 M: Fan Zhang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: lib/cryptodev/
 F: app/test/test_cryptodev*
@@ -453,6 +518,7 @@ F: examples/l2fwd-crypto/
 
 Security API
 M: Akhil Goyal <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: lib/security/
 F: doc/guides/prog_guide/rte_security.rst
@@ -461,6 +527,7 @@ F: app/test/test_security*
 Compression API - EXPERIMENTAL
 M: Fan Zhang <[email protected]>
 M: Ashish Gupta <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: lib/compressdev/
 F: drivers/compress/
@@ -470,6 +537,7 @@ F: doc/guides/compressdevs/features/default.ini
 
 RegEx API - EXPERIMENTAL
 M: Ori Kam <[email protected]>
+S: Supported
 F: lib/regexdev/
 F: app/test-regex/
 F: doc/guides/prog_guide/regexdev.rst
@@ -477,6 +545,7 @@ F: doc/guides/regexdevs/features/default.ini
 
 Machine Learning device API - EXPERIMENTAL
 M: Srikanth Yalavarthi <[email protected]>
+S: Supported
 F: lib/mldev/
 F: doc/guides/prog_guide/mldev.rst
 F: app/test-mldev/
@@ -484,6 +553,7 @@ F: doc/guides/tools/testmldev.rst
 
 DMA device API - EXPERIMENTAL
 M: Chengwen Feng <[email protected]>
+S: Supported
 F: lib/dmadev/
 F: drivers/dma/skeleton/
 F: app/test/test_dmadev*
@@ -495,6 +565,7 @@ F: doc/guides/sample_app_ug/dma.rst
 
 General-Purpose Graphics Processing Unit (GPU) API - EXPERIMENTAL
 M: Elena Agostini <[email protected]>
+S: Supported
 F: lib/gpudev/
 F: doc/guides/prog_guide/gpudev.rst
 F: doc/guides/gpus/features/default.ini
@@ -502,6 +573,7 @@ F: app/test-gpudev/
 
 Eventdev API
 M: Jerin Jacob <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: lib/eventdev/
 F: drivers/event/skeleton/
@@ -510,6 +582,7 @@ F: examples/l3fwd/l3fwd_event*
 
 Eventdev Ethdev Rx Adapter API
 M: Naga Harish K S V <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: lib/eventdev/*eth_rx_adapter*
 F: app/test/test_event_eth_rx_adapter.c
@@ -517,6 +590,7 @@ F: doc/guides/prog_guide/event_ethernet_rx_adapter.rst
 
 Eventdev Ethdev Tx Adapter API
 M: Naga Harish K S V <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: lib/eventdev/*eth_tx_adapter*
 F: app/test/test_event_eth_tx_adapter.c
@@ -524,6 +598,7 @@ F: doc/guides/prog_guide/event_ethernet_tx_adapter.rst
 
 Eventdev Timer Adapter API
 M: Erik Gabriel Carrillo <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: lib/eventdev/*timer_adapter*
 F: app/test/test_event_timer_adapter.c
@@ -531,6 +606,7 @@ F: doc/guides/prog_guide/event_timer_adapter.rst
 
 Eventdev Crypto Adapter API
 M: Abhinandan Gujjar <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: lib/eventdev/*crypto_adapter*
 F: app/test/test_event_crypto_adapter.c
@@ -539,6 +615,7 @@ F: doc/guides/prog_guide/event_crypto_adapter.rst
 Raw device API
 M: Sachin Saxena <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 F: lib/rawdev/
 F: drivers/raw/skeleton/
 F: app/test/test_rawdev.c
@@ -551,11 +628,13 @@ Memory Pool Drivers
 Bucket memory pool
 M: Artem V. Andreev <[email protected]>
 M: Andrew Rybchenko <[email protected]>
+S: Supported
 F: drivers/mempool/bucket/
 
 Marvell cnxk
 M: Ashwin Sekhar T K <[email protected]>
 M: Pavan Nikhilesh <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/mempool/cnxk/
 F: doc/guides/mempool/cnxk.rst
@@ -567,20 +646,24 @@ Bus Drivers
 AMD CDX bus
 M: Nipun Gupta <[email protected]>
 M: Nikhil Agarwal <[email protected]>
+S: Supported
 F: drivers/bus/cdx/
 
 Auxiliary bus driver - EXPERIMENTAL
 M: Parav Pandit <[email protected]>
 M: Xueming Li <[email protected]>
+S: Supported
 F: drivers/bus/auxiliary/
 
 Intel FPGA bus
 M: Rosen Xu <[email protected]>
+S: Supported
 F: drivers/bus/ifpga/
 
 NXP buses
 M: Hemant Agrawal <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/common/dpaax/
 F: drivers/bus/dpaa/
 F: drivers/bus/fslmc/
@@ -588,36 +671,43 @@ F: drivers/bus/fslmc/
 PCI bus driver
 M: Chenbo Xia <[email protected]>
 M: Nipun Gupta <[email protected]>
+S: Supported
 F: drivers/bus/pci/
 
 Platform bus driver
 M: Tomasz Duszynski <[email protected]>
+S: Supported
 F: drivers/bus/platform/
 
 VDEV bus driver
+S: Maintained
 F: drivers/bus/vdev/
 F: app/test/test_vdev.c
 
 VMBUS bus driver
 M: Long Li <[email protected]>
+S: Supported
 F: drivers/bus/vmbus/
 
 
 Networking Drivers
 ------------------
 M: Ferruh Yigit <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: doc/guides/nics/features/default.ini
 
 Link bonding
 M: Chas Williams <[email protected]>
 M: Min Hu (Connor) <[email protected]>
+S: Supported
 F: drivers/net/bonding/
 F: doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
 F: app/test/test_link_bonding*
 F: examples/bond/
 
 Linux KNI
+S: Obsolete
 F: kernel/linux/kni/
 F: lib/kni/
 F: doc/guides/prog_guide/kernel_nic_interface.rst
@@ -625,12 +715,14 @@ F: app/test/test_kni.c
 
 Linux AF_PACKET
 M: John W. Linville <[email protected]>
+S: Odd Fixes
 F: drivers/net/af_packet/
 F: doc/guides/nics/features/afpacket.ini
 
 Linux AF_XDP
 M: Ciara Loftus <[email protected]>
 M: Qi Zhang <[email protected]>
+S: Supported
 F: drivers/net/af_xdp/
 F: doc/guides/nics/af_xdp.rst
 F: doc/guides/nics/features/af_xdp.ini
@@ -641,24 +733,28 @@ M: Shai Brandes <[email protected]>
 M: Evgeny Schemeilin <[email protected]>
 M: Igor Chauskin <[email protected]>
 M: Ron Beider <[email protected]>
+S: Supported
 F: drivers/net/ena/
 F: doc/guides/nics/ena.rst
 F: doc/guides/nics/features/ena.ini
 
 AMD axgbe
 M: Chandubabu Namburu <[email protected]>
+S: Supported
 F: drivers/net/axgbe/
 F: doc/guides/nics/axgbe.rst
 F: doc/guides/nics/features/axgbe.ini
 
 AMD Pensando ionic
 M: Andrew Boyer <[email protected]>
+S: Supported
 F: drivers/net/ionic/
 F: doc/guides/nics/ionic.rst
 F: doc/guides/nics/features/ionic.ini
 
 Marvell/Aquantia atlantic
 M: Igor Russkikh <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/atlantic/
 F: doc/guides/nics/atlantic.rst
@@ -668,6 +764,7 @@ Atomic Rules ARK
 M: Shepard Siegel <[email protected]>
 M: Ed Czeck <[email protected]>
 M: John Miller <[email protected]>
+S: Supported
 F: drivers/net/ark/
 F: doc/guides/nics/ark.rst
 F: doc/guides/nics/features/ark.ini
@@ -675,6 +772,7 @@ F: doc/guides/nics/features/ark.ini
 Broadcom bnxt
 M: Ajit Khaparde <[email protected]>
 M: Somnath Kotur <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-brcm
 F: drivers/net/bnxt/
 F: doc/guides/nics/bnxt.rst
@@ -683,6 +781,7 @@ F: doc/guides/nics/features/bnxt.ini
 Cavium ThunderX nicvf
 M: Jerin Jacob <[email protected]>
 M: Maciej Czekaj <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/thunderx/
 F: doc/guides/nics/thunderx.rst
@@ -690,6 +789,7 @@ F: doc/guides/nics/features/thunderx.ini
 
 Cavium OCTEON TX
 M: Harman Kalra <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/common/octeontx/
 F: drivers/mempool/octeontx/
@@ -699,6 +799,7 @@ F: doc/guides/nics/features/octeontx.ini
 
 Chelsio cxgbe
 M: Rahul Lakkireddy <[email protected]>
+S: Supported
 F: drivers/net/cxgbe/
 F: doc/guides/nics/cxgbe.rst
 F: doc/guides/nics/features/cxgbe.ini
@@ -706,6 +807,7 @@ F: doc/guides/nics/features/cxgbe.ini
 Cisco enic
 M: John Daley <[email protected]>
 M: Hyong Youb Kim <[email protected]>
+S: Supported
 F: drivers/net/enic/
 F: doc/guides/nics/enic.rst
 F: doc/guides/nics/features/enic.ini
@@ -715,6 +817,7 @@ M: Junfeng Guo <[email protected]>
 M: Jeroen de Borst <[email protected]>
 M: Rushil Gupta <[email protected]>
 M: Joshua Washington <[email protected]>
+S: Supported
 F: drivers/net/gve/
 F: doc/guides/nics/gve.rst
 F: doc/guides/nics/features/gve.ini
@@ -722,6 +825,7 @@ F: doc/guides/nics/features/gve.ini
 Hisilicon hns3
 M: Dongdong Liu <[email protected]>
 M: Yisen Zhuang <[email protected]>
+S: Supported
 F: drivers/net/hns3/
 F: doc/guides/nics/hns3.rst
 F: doc/guides/nics/features/hns3.ini
@@ -730,6 +834,7 @@ Huawei hinic
 M: Ziyang Xuan <[email protected]>
 M: Xiaoyun Wang <[email protected]>
 M: Guoyang Zhou <[email protected]>
+S: Supported
 F: drivers/net/hinic/
 F: doc/guides/nics/hinic.rst
 F: doc/guides/nics/features/hinic.ini
@@ -737,6 +842,7 @@ F: doc/guides/nics/features/hinic.ini
 Intel e1000
 M: Simei Su <[email protected]>
 M: Wenjun Wu <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/e1000/
 F: doc/guides/nics/e1000em.rst
@@ -747,6 +853,7 @@ F: doc/guides/nics/features/igb*.ini
 Intel ixgbe
 M: Qiming Yang <[email protected]>
 M: Wenjun Wu <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/ixgbe/
 F: doc/guides/nics/ixgbe.rst
@@ -756,6 +863,7 @@ F: doc/guides/nics/features/ixgbe*.ini
 Intel i40e
 M: Yuying Zhang <[email protected]>
 M: Beilei Xing <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/i40e/
 F: doc/guides/nics/i40e.rst
@@ -765,6 +873,7 @@ F: doc/guides/nics/features/i40e*.ini
 Intel fm10k
 M: Qi Zhang <[email protected]>
 M: Xiao Wang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/fm10k/
 F: doc/guides/nics/fm10k.rst
@@ -773,6 +882,7 @@ F: doc/guides/nics/features/fm10k*.ini
 Intel iavf
 M: Jingjing Wu <[email protected]>
 M: Beilei Xing <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/iavf/
 F: drivers/common/iavf/
@@ -781,6 +891,7 @@ F: doc/guides/nics/features/iavf*.ini
 Intel ice
 M: Qiming Yang <[email protected]>
 M: Qi Zhang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/ice/
 F: doc/guides/nics/ice.rst
@@ -789,6 +900,7 @@ F: doc/guides/nics/features/ice.ini
 Intel idpf
 M: Jingjing Wu <[email protected]>
 M: Beilei Xing <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/idpf/
 F: drivers/common/idpf/
@@ -798,6 +910,7 @@ F: doc/guides/nics/features/idpf.ini
 Intel cpfl - EXPERIMENTAL
 M: Yuying Zhang <[email protected]>
 M: Beilei Xing <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/cpfl/
 F: doc/guides/nics/cpfl.rst
@@ -806,6 +919,7 @@ F: doc/guides/nics/features/cpfl.ini
 Intel igc
 M: Junfeng Guo <[email protected]>
 M: Simei Su <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/net/igc/
 F: doc/guides/nics/igc.rst
@@ -814,6 +928,7 @@ F: doc/guides/nics/features/igc.ini
 Intel ipn3ke
 M: Rosen Xu <[email protected]>
 T: git://dpdk.org/next/dpdk-next-net-intel
+S: Supported
 F: drivers/net/ipn3ke/
 F: doc/guides/nics/ipn3ke.rst
 F: doc/guides/nics/features/ipn3ke.ini
@@ -823,6 +938,7 @@ M: Nithin Dabilpuram <[email protected]>
 M: Kiran Kumar K <[email protected]>
 M: Sunil Kumar Kori <[email protected]>
 M: Satha Rao <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/common/cnxk/
 F: drivers/net/cnxk/
@@ -832,6 +948,7 @@ F: doc/guides/platform/cnxk.rst
 
 Marvell mvpp2
 M: Liron Himi <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/common/mvep/
 F: drivers/net/mvpp2/
@@ -841,6 +958,7 @@ F: doc/guides/nics/features/mvpp2.ini
 Marvell mvneta
 M: Zyta Szpak <[email protected]>
 M: Liron Himi <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/mvneta/
 F: doc/guides/nics/mvneta.rst
@@ -848,6 +966,7 @@ F: doc/guides/nics/features/mvneta.ini
 
 Marvell OCTEON TX EP - endpoint
 M: Vamsi Attunuru <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/octeon_ep/
 F: doc/guides/nics/features/octeon_ep.ini
@@ -856,6 +975,7 @@ F: doc/guides/nics/octeon_ep.rst
 NVIDIA mlx4
 M: Matan Azrad <[email protected]>
 M: Viacheslav Ovsiienko <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mlx
 F: drivers/net/mlx4/
 F: doc/guides/nics/mlx4.rst
@@ -866,6 +986,7 @@ M: Matan Azrad <[email protected]>
 M: Viacheslav Ovsiienko <[email protected]>
 M: Ori Kam <[email protected]>
 M: Suanming Mou <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mlx
 F: drivers/common/mlx5/
 F: drivers/net/mlx5/
@@ -875,23 +996,27 @@ F: doc/guides/nics/features/mlx5.ini
 
 Microsoft mana
 M: Long Li <[email protected]>
+S: Supported
 F: drivers/net/mana/
 F: doc/guides/nics/mana.rst
 F: doc/guides/nics/features/mana.ini
 
 Microsoft vdev_netvsc - EXPERIMENTAL
 M: Matan Azrad <[email protected]>
+S: Odd Fixes
 F: drivers/net/vdev_netvsc/
 F: doc/guides/nics/vdev_netvsc.rst
 
 Microsoft Hyper-V netvsc
 M: Long Li <[email protected]>
+S: Supported
 F: drivers/net/netvsc/
 F: doc/guides/nics/netvsc.rst
 F: doc/guides/nics/features/netvsc.ini
 
 Netcope nfb
 M: Martin Spinler <[email protected]>
+S: Supported
 F: drivers/net/nfb/
 F: doc/guides/nics/nfb.rst
 F: doc/guides/nics/features/nfb.ini
@@ -899,6 +1024,7 @@ F: doc/guides/nics/features/nfb.ini
 Netronome nfp
 M: Chaoyong He <[email protected]>
 M: Niklas Soderlund <[email protected]>
+S: Supported
 F: drivers/net/nfp/
 F: doc/guides/nics/nfp.rst
 F: doc/guides/nics/features/nfp*.ini
@@ -906,6 +1032,7 @@ F: doc/guides/nics/features/nfp*.ini
 NXP dpaa
 M: Hemant Agrawal <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/mempool/dpaa/
 F: drivers/net/dpaa/
 F: doc/guides/nics/dpaa.rst
@@ -914,6 +1041,7 @@ F: doc/guides/nics/features/dpaa.ini
 NXP dpaa2
 M: Hemant Agrawal <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/mempool/dpaa2/
 F: drivers/net/dpaa2/
 F: doc/guides/nics/dpaa2.rst
@@ -922,6 +1050,7 @@ F: doc/guides/nics/features/dpaa2.ini
 NXP enetc
 M: Gagandeep Singh <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/net/enetc/
 F: doc/guides/nics/enetc.rst
 F: doc/guides/nics/features/enetc.ini
@@ -929,18 +1058,21 @@ F: doc/guides/nics/features/enetc.ini
 NXP enetfec - EXPERIMENTAL
 M: Apeksha Gupta <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/net/enetfec/
 F: doc/guides/nics/enetfec.rst
 F: doc/guides/nics/features/enetfec.ini
 
 NXP pfe
 M: Gagandeep Singh <[email protected]>
+S: Supported
 F: doc/guides/nics/pfe.rst
 F: drivers/net/pfe/
 F: doc/guides/nics/features/pfe.ini
 
 Marvell QLogic bnx2x
 M: Julien Aube <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/bnx2x/
 F: doc/guides/nics/bnx2x.rst
@@ -949,6 +1081,7 @@ F: doc/guides/nics/features/bnx2x*.ini
 Marvell QLogic qede PMD
 M: Devendra Singh Rawat <[email protected]>
 M: Alok Prasad <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-mrvl
 F: drivers/net/qede/
 F: doc/guides/nics/qede.rst
@@ -956,6 +1089,7 @@ F: doc/guides/nics/features/qede*.ini
 
 Solarflare sfc_efx
 M: Andrew Rybchenko <[email protected]>
+S: Supported
 F: drivers/common/sfc_efx/
 F: drivers/net/sfc/
 F: doc/guides/nics/sfc_efx.rst
@@ -963,6 +1097,7 @@ F: doc/guides/nics/features/sfc.ini
 
 Wangxun ngbe
 M: Jiawen Wu <[email protected]>
+S: Supported
 F: drivers/net/ngbe/
 F: doc/guides/nics/ngbe.rst
 F: doc/guides/nics/features/ngbe.ini
@@ -970,12 +1105,14 @@ F: doc/guides/nics/features/ngbe.ini
 Wangxun txgbe
 M: Jiawen Wu <[email protected]>
 M: Jian Wang <[email protected]>
+S: Supported
 F: drivers/net/txgbe/
 F: doc/guides/nics/txgbe.rst
 F: doc/guides/nics/features/txgbe.ini
 
 VMware vmxnet3
 M: Jochen Behrens <[email protected]>
+S: Supported
 F: drivers/net/vmxnet3/
 F: doc/guides/nics/vmxnet3.rst
 F: doc/guides/nics/features/vmxnet3.ini
@@ -983,6 +1120,7 @@ F: doc/guides/nics/features/vmxnet3.ini
 Vhost-user
 M: Maxime Coquelin <[email protected]>
 M: Chenbo Xia <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-virtio
 F: lib/vhost/
 F: doc/guides/prog_guide/vhost_lib.rst
@@ -997,6 +1135,7 @@ F: doc/guides/sample_app_ug/vdpa.rst
 Vhost PMD
 M: Maxime Coquelin <[email protected]>
 M: Chenbo Xia <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-virtio
 F: drivers/net/vhost/
 F: doc/guides/nics/vhost.rst
@@ -1005,6 +1144,7 @@ F: doc/guides/nics/features/vhost.ini
 Virtio PMD
 M: Maxime Coquelin <[email protected]>
 M: Chenbo Xia <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-virtio
 F: drivers/net/virtio/
 F: doc/guides/nics/virtio.rst
@@ -1013,26 +1153,31 @@ F: doc/guides/nics/features/virtio*.ini
 Wind River AVP
 M: Steven Webster <[email protected]>
 M: Matt Peters <[email protected]>
+S: Supported
 F: drivers/net/avp/
 F: doc/guides/nics/avp.rst
 F: doc/guides/nics/features/avp.ini
 
 PCAP PMD
+S: Orphan
 F: drivers/net/pcap/
 F: doc/guides/nics/pcap_ring.rst
 F: doc/guides/nics/features/pcap.ini
 
 Tap PMD
+S: Orphan
 F: drivers/net/tap/
 F: doc/guides/nics/tap.rst
 F: doc/guides/nics/features/tap.ini
 
 KNI PMD
+S: Obsolete
 F: drivers/net/kni/
 F: doc/guides/nics/kni.rst
 
 Ring PMD
 M: Bruce Richardson <[email protected]>
+S: Supported
 F: drivers/net/ring/
 F: doc/guides/nics/pcap_ring.rst
 F: app/test/test_pmd_ring.c
@@ -1040,21 +1185,25 @@ F: app/test/test_pmd_ring_perf.c
 
 Null Networking PMD
 M: Tetsuya Mukawa <[email protected]>
+S: Supported
 F: drivers/net/null/
 
 Fail-safe PMD
 M: Gaetan Rivet <[email protected]>
+S: Odd Fixes
 F: drivers/net/failsafe/
 F: doc/guides/nics/fail_safe.rst
 F: doc/guides/nics/features/failsafe.ini
 
 Softnic PMD
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 F: drivers/net/softnic/
 F: doc/guides/nics/softnic.rst
 
 Memif PMD
 M: Jakub Grajciar <[email protected]>
+S: Supported
 F: drivers/net/memif/
 F: doc/guides/nics/memif.rst
 F: doc/guides/nics/features/memif.ini
@@ -1062,17 +1211,20 @@ F: doc/guides/nics/features/memif.ini
 
 Crypto Drivers
 --------------
+S: Maintained
 T: git://dpdk.org/next/dpdk-next-crypto
 F: doc/guides/cryptodevs/features/default.ini
 
 AMD CCP Crypto
 M: Sunil Uttarwar <[email protected]>
+S: Supported
 F: drivers/crypto/ccp/
 F: doc/guides/cryptodevs/ccp.rst
 F: doc/guides/cryptodevs/features/ccp.ini
 
 ARMv8 Crypto
 M: Ruifeng Wang <[email protected]>
+S: Supported
 F: drivers/crypto/armv8/
 F: doc/guides/cryptodevs/armv8.rst
 F: doc/guides/cryptodevs/features/armv8.ini
@@ -1081,12 +1233,14 @@ Broadcom FlexSparc
 M: Ajit Khaparde <[email protected]>
 M: Raveendra Padasalagi <[email protected]>
 M: Vikas Gupta <[email protected]>
+S: Supported
 F: drivers/crypto/bcmfs/
 F: doc/guides/cryptodevs/bcmfs.rst
 F: doc/guides/cryptodevs/features/bcmfs.ini
 
 Cavium OCTEON TX crypto
 M: Anoob Joseph <[email protected]>
+S: Supported
 F: drivers/common/cpt/
 F: drivers/crypto/octeontx/
 F: doc/guides/cryptodevs/octeontx.rst
@@ -1094,17 +1248,20 @@ F: doc/guides/cryptodevs/features/octeontx.ini
 
 Crypto Scheduler
 M: Kai Ji <[email protected]>
+S: Supported
 F: drivers/crypto/scheduler/
 F: doc/guides/cryptodevs/scheduler.rst
 
 HiSilicon UADK crypto
 M: Zhangfei Gao <[email protected]>
+S: Supported
 F: drivers/crypto/uadk/
 F: doc/guides/cryptodevs/uadk.rst
 F: doc/guides/cryptodevs/features/uadk.ini
 
 Intel QuickAssist
 M: Kai Ji <[email protected]>
+S: Supported
 F: drivers/crypto/qat/
 F: drivers/common/qat/
 F: doc/guides/cryptodevs/qat.rst
@@ -1113,6 +1270,7 @@ F: doc/guides/cryptodevs/features/qat.ini
 IPsec MB
 M: Kai Ji <[email protected]>
 M: Pablo de Lara <[email protected]>
+S: Supported
 F: drivers/crypto/ipsec_mb/
 F: doc/guides/cryptodevs/aesni_gcm.rst
 F: doc/guides/cryptodevs/aesni_mb.rst
@@ -1131,6 +1289,7 @@ Marvell cnxk crypto
 M: Ankur Dwivedi <[email protected]>
 M: Anoob Joseph <[email protected]>
 M: Tejasree Kondoj <[email protected]>
+S: Supported
 F: drivers/crypto/cnxk/
 F: doc/guides/cryptodevs/cnxk.rst
 F: doc/guides/cryptodevs/features/cn9k.ini
@@ -1139,6 +1298,7 @@ F: doc/guides/cryptodevs/features/cn10k.ini
 Marvell mvsam
 M: Michael Shamis <[email protected]>
 M: Liron Himi <[email protected]>
+S: Supported
 F: drivers/crypto/mvsam/
 F: doc/guides/cryptodevs/mvsam.rst
 F: doc/guides/cryptodevs/features/mvsam.ini
@@ -1146,18 +1306,21 @@ F: doc/guides/cryptodevs/features/mvsam.ini
 Marvell Nitrox
 M: Nagadheeraj Rottela <[email protected]>
 M: Srikanth Jampala <[email protected]>
+S: Supported
 F: drivers/crypto/nitrox/
 F: doc/guides/cryptodevs/nitrox.rst
 F: doc/guides/cryptodevs/features/nitrox.ini
 
 NVIDIA mlx5
 M: Matan Azrad <[email protected]>
+S: Supported
 F: drivers/crypto/mlx5/
 F: doc/guides/cryptodevs/mlx5.rst
 F: doc/guides/cryptodevs/features/mlx5.ini
 
 Null Crypto
 M: Kai Ji <[email protected]>
+S: Supported
 F: drivers/crypto/null/
 F: doc/guides/cryptodevs/null.rst
 F: doc/guides/cryptodevs/features/null.ini
@@ -1165,6 +1328,7 @@ F: doc/guides/cryptodevs/features/null.ini
 NXP CAAM JR
 M: Gagandeep Singh <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 F: drivers/crypto/caam_jr/
 F: doc/guides/cryptodevs/caam_jr.rst
 F: doc/guides/cryptodevs/features/caam_jr.ini
@@ -1172,6 +1336,7 @@ F: doc/guides/cryptodevs/features/caam_jr.ini
 NXP DPAA_SEC
 M: Gagandeep Singh <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 F: drivers/crypto/dpaa_sec/
 F: doc/guides/cryptodevs/dpaa_sec.rst
 F: doc/guides/cryptodevs/features/dpaa_sec.ini
@@ -1179,18 +1344,21 @@ F: doc/guides/cryptodevs/features/dpaa_sec.ini
 NXP DPAA2_SEC
 M: Gagandeep Singh <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 F: drivers/crypto/dpaa2_sec/
 F: doc/guides/cryptodevs/dpaa2_sec.rst
 F: doc/guides/cryptodevs/features/dpaa2_sec.ini
 
 OpenSSL
 M: Kai Ji <[email protected]>
+S: Supported
 F: drivers/crypto/openssl/
 F: doc/guides/cryptodevs/openssl.rst
 F: doc/guides/cryptodevs/features/openssl.ini
 
 Virtio
 M: Jay Zhou <[email protected]>
+S: Supported
 F: drivers/crypto/virtio/
 F: doc/guides/cryptodevs/virtio.rst
 F: doc/guides/cryptodevs/features/virtio.ini
@@ -1198,31 +1366,37 @@ F: doc/guides/cryptodevs/features/virtio.ini
 
 Compression Drivers
 -------------------
+S: Maintained
 T: git://dpdk.org/next/dpdk-next-crypto
 
 Cavium OCTEON TX zipvf
 M: Ashish Gupta <[email protected]>
+S: Supported
 F: drivers/compress/octeontx/
 F: doc/guides/compressdevs/octeontx.rst
 F: doc/guides/compressdevs/features/octeontx.ini
 
 Intel QuickAssist
 M: Kai Ji <[email protected]>
+S: Supported
 F: drivers/compress/qat/
 F: drivers/common/qat/
 
 ISA-L
 M: Lee Daly <[email protected]>
+S: Supported
 F: drivers/compress/isal/
 F: doc/guides/compressdevs/isal.rst
 F: doc/guides/compressdevs/features/isal.ini
 
 NVIDIA mlx5
 M: Matan Azrad <[email protected]>
+S: Supported
 F: drivers/compress/mlx5/
 
 ZLIB
 M: Sunila Sahu <[email protected]>
+S: Supported
 F: drivers/compress/zlib/
 F: doc/guides/compressdevs/zlib.rst
 F: doc/guides/compressdevs/features/zlib.ini
@@ -1234,34 +1408,40 @@ DMAdev Drivers
 Intel IDXD - EXPERIMENTAL
 M: Bruce Richardson <[email protected]>
 M: Kevin Laatz <[email protected]>
+S: Supported
 F: drivers/dma/idxd/
 F: doc/guides/dmadevs/idxd.rst
 
 Intel IOAT
 M: Bruce Richardson <[email protected]>
 M: Conor Walsh <[email protected]>
+S: Supported
 F: drivers/dma/ioat/
 F: doc/guides/dmadevs/ioat.rst
 
 HiSilicon DMA
 M: Chengwen Feng <[email protected]>
+S: Supported
 F: drivers/dma/hisilicon/
 F: doc/guides/dmadevs/hisilicon.rst
 
 Marvell CNXK DPI DMA
 M: Vamsi Attunuru <[email protected]>
+S: Supported
 F: drivers/dma/cnxk/
 F: doc/guides/dmadevs/cnxk.rst
 
 NXP DPAA DMA
 M: Gagandeep Singh <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/dma/dpaa/
 F: doc/guides/dmadevs/dpaa.rst
 
 NXP DPAA2 QDMA
 M: Gagandeep Singh <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 F: drivers/dma/dpaa2/
 F: doc/guides/dmadevs/dpaa2.rst
 
@@ -1271,12 +1451,14 @@ RegEx Drivers
 
 Marvell OCTEON CN9K regex
 M: Liron Himi <[email protected]>
+S: Supported
 F: drivers/regex/cn9k/
 F: doc/guides/regexdevs/cn9k.rst
 F: doc/guides/regexdevs/features/cn9k.ini
 
 NVIDIA mlx5
 M: Ori Kam <[email protected]>
+S: Supported
 F: drivers/regex/mlx5/
 F: doc/guides/regexdevs/mlx5.rst
 F: doc/guides/regexdevs/features/mlx5.ini
@@ -1287,6 +1469,7 @@ MLdev Drivers
 
 Marvell ML CNXK
 M: Srikanth Yalavarthi <[email protected]>
+S: Supported
 F: drivers/common/cnxk/hw/ml.h
 F: drivers/common/cnxk/roc_ml*
 F: drivers/ml/cnxk/
@@ -1299,6 +1482,7 @@ T: git://dpdk.org/next/dpdk-next-virtio
 
 Intel ifc
 M: Xiao Wang <[email protected]>
+S: Supported
 F: drivers/vdpa/ifc/
 F: doc/guides/vdpadevs/ifc.rst
 F: doc/guides/vdpadevs/features/ifcvf.ini
@@ -1306,12 +1490,14 @@ F: doc/guides/vdpadevs/features/ifcvf.ini
 NVIDIA mlx5 vDPA
 M: Matan Azrad <[email protected]>
 M: Viacheslav Ovsiienko <[email protected]>
+S: Supported
 F: drivers/vdpa/mlx5/
 F: doc/guides/vdpadevs/mlx5.rst
 F: doc/guides/vdpadevs/features/mlx5.ini
 
 Xilinx sfc vDPA
 M: Vijay Kumar Srivastava <[email protected]>
+S: Supported
 F: drivers/vdpa/sfc/
 F: doc/guides/vdpadevs/sfc.rst
 F: doc/guides/vdpadevs/features/sfc.ini
@@ -1320,42 +1506,50 @@ F: doc/guides/vdpadevs/features/sfc.ini
 Eventdev Drivers
 ----------------
 M: Jerin Jacob <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 
 Cavium OCTEON TX ssovf
 M: Jerin Jacob <[email protected]>
+S: Supported
 F: drivers/event/octeontx/
 F: doc/guides/eventdevs/octeontx.rst
 
 Cavium OCTEON TX timvf
 M: Pavan Nikhilesh <[email protected]>
+S: Supported
 F: drivers/event/octeontx/timvf_*
 
 Intel DLB2
 M: Timothy McDaniel <[email protected]>
+S: Supported
 F: drivers/event/dlb2/
 F: doc/guides/eventdevs/dlb2.rst
 
 Marvell cnxk
 M: Pavan Nikhilesh <[email protected]>
 M: Shijith Thotton <[email protected]>
+S: Supported
 F: drivers/event/cnxk/
 F: doc/guides/eventdevs/cnxk.rst
 
 NXP DPAA eventdev
 M: Hemant Agrawal <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/event/dpaa/
 F: doc/guides/eventdevs/dpaa.rst
 
 NXP DPAA2 eventdev
 M: Hemant Agrawal <[email protected]>
 M: Sachin Saxena <[email protected]>
+S: Supported
 F: drivers/event/dpaa2/
 F: doc/guides/eventdevs/dpaa2.rst
 
 Software Eventdev PMD
 M: Harry van Haaren <[email protected]>
+S: Supported
 F: drivers/event/sw/
 F: doc/guides/eventdevs/sw.rst
 F: examples/eventdev_pipeline/
@@ -1363,11 +1557,13 @@ F: doc/guides/sample_app_ug/eventdev_pipeline.rst
 
 Distributed Software Eventdev PMD
 M: Mattias Rönnblom <[email protected]>
+S: Supported
 F: drivers/event/dsw/
 F: doc/guides/eventdevs/dsw.rst
 
 Software OPDL Eventdev PMD
 M: Liang Ma <[email protected]>
+S: Supported
 M: Peter Mccarthy <[email protected]>
 F: drivers/event/opdl/
 F: doc/guides/eventdevs/opdl.rst
@@ -1378,6 +1574,7 @@ Baseband Drivers
 
 Intel baseband
 M: Nicolas Chautru <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-baseband
 F: drivers/baseband/turbo_sw/
 F: doc/guides/bbdevs/turbo_sw.rst
@@ -1397,6 +1594,7 @@ F: doc/guides/bbdevs/features/vrb1.ini
 
 Null baseband
 M: Nicolas Chautru <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-baseband
 F: drivers/baseband/null/
 F: doc/guides/bbdevs/null.rst
@@ -1405,6 +1603,7 @@ F: doc/guides/bbdevs/features/null.ini
 NXP LA12xx
 M: Gagandeep Singh <[email protected]>
 M: Hemant Agrawal <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-baseband
 F: drivers/baseband/la12xx/
 F: doc/guides/bbdevs/la12xx.rst
@@ -1416,6 +1615,7 @@ GPU Drivers
 
 NVIDIA CUDA
 M: Elena Agostini <[email protected]>
+S: Supported
 F: drivers/gpu/cuda/
 F: doc/guides/gpus/cuda.rst
 
@@ -1426,6 +1626,7 @@ Rawdev Drivers
 Intel FPGA
 M: Rosen Xu <[email protected]>
 M: Tianfei zhang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net-intel
 F: drivers/raw/ifpga/
 F: doc/guides/rawdevs/ifpga.rst
@@ -1433,18 +1634,21 @@ F: doc/guides/rawdevs/ifpga.rst
 Marvell CNXK BPHY
 M: Jakub Palider <[email protected]>
 M: Tomasz Duszynski <[email protected]>
+S: Supported
 F: doc/guides/rawdevs/cnxk_bphy.rst
 F: drivers/raw/cnxk_bphy/
 
 Marvell CNXK GPIO
 M: Jakub Palider <[email protected]>
 M: Tomasz Duszynski <[email protected]>
+S: Supported
 F: doc/guides/rawdevs/cnxk_gpio.rst
 F: drivers/raw/cnxk_gpio/
 
 NTB
 M: Jingjing Wu <[email protected]>
 M: Junfeng Guo <[email protected]>
+S: Supported
 F: drivers/raw/ntb/
 F: doc/guides/rawdevs/ntb.rst
 F: examples/ntb/
@@ -1452,6 +1656,7 @@ F: doc/guides/sample_app_ug/ntb.rst
 
 NXP DPAA2 CMDIF
 M: Gagandeep Singh <[email protected]>
+S: Supported
 F: drivers/raw/dpaa2_cmdif/
 F: doc/guides/rawdevs/dpaa2_cmdif.rst
 
@@ -1461,12 +1666,14 @@ Packet processing
 
 Network headers
 M: Olivier Matz <[email protected]>
+S: Supported
 F: lib/net/
 F: app/test/test_cksum.c
 F: app/test/test_cksum_perf.c
 
 Packet CRC
 M: Jasvinder Singh <[email protected]>
+S: Supported
 F: lib/net/net_crc.h
 F: lib/net/rte_net_crc*
 F: lib/net/net_crc_avx512.c
@@ -1475,6 +1682,7 @@ F: app/test/test_crc.c
 
 IP fragmentation & reassembly
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 F: lib/ip_frag/
 F: doc/guides/prog_guide/ip_fragment_reassembly_lib.rst
 F: app/test/test_ipfrag.c
@@ -1486,16 +1694,19 @@ F: doc/guides/sample_app_ug/ip_reassembly.rst
 
 Generic Receive Offload - EXPERIMENTAL
 M: Jiayu Hu <[email protected]>
+S: Supported
 F: lib/gro/
 F: doc/guides/prog_guide/generic_receive_offload_lib.rst
 
 Generic Segmentation Offload
 M: Jiayu Hu <[email protected]>
+S: Supported
 F: lib/gso/
 F: doc/guides/prog_guide/generic_segmentation_offload_lib.rst
 
 IPsec
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: lib/ipsec/
 F: app/test/test_ipsec*
@@ -1506,12 +1717,14 @@ F: app/test-sad/
 PDCP - EXPERIMENTAL
 M: Anoob Joseph <[email protected]>
 M: Volodymyr Fialko <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: lib/pdcp/
 F: doc/guides/prog_guide/pdcp_lib.rst
 F: app/test/test_pdcp*
 
 Flow Classify - EXPERIMENTAL - UNMAINTAINED
+S: Orphan
 F: lib/flow_classify/
 F: app/test/test_flow_classify*
 F: doc/guides/prog_guide/flow_classify_lib.rst
@@ -1520,6 +1733,7 @@ F: doc/guides/sample_app_ug/flow_classify.rst
 
 Distributor
 M: David Hunt <[email protected]>
+S: Supported
 F: lib/distributor/
 F: doc/guides/prog_guide/packet_distrib_lib.rst
 F: app/test/test_distributor*
@@ -1528,6 +1742,7 @@ F: doc/guides/sample_app_ug/dist_app.rst
 
 Reorder
 M: Volodymyr Fialko <[email protected]>
+S: Supported
 F: lib/reorder/
 F: doc/guides/prog_guide/reorder_lib.rst
 F: app/test/test_reorder*
@@ -1536,6 +1751,7 @@ F: doc/guides/sample_app_ug/packet_ordering.rst
 
 Hierarchical scheduler
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 F: lib/sched/
 F: doc/guides/prog_guide/qos_framework.rst
 F: app/test/test_pie.c
@@ -1547,6 +1763,7 @@ F: doc/guides/sample_app_ug/qos_scheduler.rst
 Packet capture
 M: Reshma Pattan <[email protected]>
 M: Stephen Hemminger <[email protected]>
+S: Maintained
 F: lib/pdump/
 F: doc/guides/prog_guide/pdump_lib.rst
 F: app/test/test_pdump.*
@@ -1562,6 +1779,7 @@ F: doc/guides/tools/dumpcap.rst
 Packet Framework
 ----------------
 M: Cristian Dumitrescu <[email protected]>
+S: Obsolete
 F: lib/pipeline/
 F: lib/port/
 F: lib/table/
@@ -1579,6 +1797,7 @@ Algorithms
 
 ACL
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 F: lib/acl/
 F: doc/guides/prog_guide/packet_classif_access_ctrl.rst
 F: app/test-acl/
@@ -1587,6 +1806,7 @@ F: app/test/test_acl.*
 EFD
 M: Byron Marohn <[email protected]>
 M: Yipeng Wang <[email protected]>
+S: Supported
 F: lib/efd/
 F: doc/guides/prog_guide/efd_lib.rst
 F: app/test/test_efd*
@@ -1598,6 +1818,7 @@ M: Yipeng Wang <[email protected]>
 M: Sameh Gobriel <[email protected]>
 M: Bruce Richardson <[email protected]>
 M: Vladimir Medvedkin <[email protected]>
+S: Supported
 F: lib/hash/
 F: doc/guides/prog_guide/hash_lib.rst
 F: doc/guides/prog_guide/toeplitz_hash_lib.rst
@@ -1607,6 +1828,7 @@ F: app/test/test_func_reentrancy.c
 LPM
 M: Bruce Richardson <[email protected]>
 M: Vladimir Medvedkin <[email protected]>
+S: Supported
 F: lib/lpm/
 F: doc/guides/prog_guide/lpm*
 F: app/test/test_lpm*
@@ -1616,12 +1838,14 @@ F: app/test/test_xmmt_ops.h
 Membership - EXPERIMENTAL
 M: Yipeng Wang <[email protected]>
 M: Sameh Gobriel <[email protected]>
+S: Supported
 F: lib/member/
 F: doc/guides/prog_guide/member_lib.rst
 F: app/test/test_member*
 
 RIB/FIB
 M: Vladimir Medvedkin <[email protected]>
+S: Supported
 F: lib/rib/
 F: app/test/test_rib*
 F: lib/fib/
@@ -1630,6 +1854,7 @@ F: app/test-fib/
 
 Traffic metering
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 F: lib/meter/
 F: doc/guides/sample_app_ug/qos_scheduler.rst
 F: app/test/test_meter.c
@@ -1642,12 +1867,14 @@ Other libraries
 
 Configuration file
 M: Cristian Dumitrescu <[email protected]>
+S: Supported
 F: lib/cfgfile/
 F: app/test/test_cfgfile.c
 F: app/test/test_cfgfiles/
 
 Interactive command line
 M: Olivier Matz <[email protected]>
+S: Supported
 F: lib/cmdline/
 F: app/test-cmdline/
 F: app/test/test_cmdline*
@@ -1656,11 +1883,13 @@ F: doc/guides/sample_app_ug/cmd_line.rst
 
 Key/Value parsing
 M: Olivier Matz <[email protected]>
+S: Supported
 F: lib/kvargs/
 F: app/test/test_kvargs.c
 
 RCU
 M: Honnappa Nagarahalli <[email protected]>
+S: Supported
 F: lib/rcu/
 F: app/test/test_rcu*
 F: doc/guides/prog_guide/rcu_lib.rst
@@ -1668,11 +1897,13 @@ F: doc/guides/prog_guide/rcu_lib.rst
 PCI
 M: Chenbo Xia <[email protected]>
 M: Gaetan Rivet <[email protected]>
+S: Supported
 F: lib/pci/
 
 Power management
 M: Anatoly Burakov <[email protected]>
 M: David Hunt <[email protected]>
+S: Supported
 F: lib/power/
 F: doc/guides/prog_guide/power_man.rst
 F: app/test/test_power*
@@ -1683,6 +1914,7 @@ F: doc/guides/sample_app_ug/vm_power_management.rst
 
 Timers
 M: Erik Gabriel Carrillo <[email protected]>
+S: Supported
 F: lib/timer/
 F: doc/guides/prog_guide/timer_lib.rst
 F: app/test/test_timer*
@@ -1690,25 +1922,30 @@ F: examples/timer/
 F: doc/guides/sample_app_ug/timer.rst
 
 Job statistics
+S: Orphan
 F: lib/jobstats/
 F: examples/l2fwd-jobstats/
 F: doc/guides/sample_app_ug/l2_forward_job_stats.rst
 
 Metrics
+S: Orphan
 F: lib/metrics/
 F: app/test/test_metrics.c
 
 Bit-rate statistics
+S: Orphan
 F: lib/bitratestats/
 F: app/test/test_bitratestats.c
 
 Latency statistics
 M: Reshma Pattan <[email protected]>
+S: Supported
 F: lib/latencystats/
 F: app/test/test_latencystats.c
 
 Telemetry
 M: Ciara Power <[email protected]>
+S: Supported
 F: lib/telemetry/
 F: app/test/test_telemetry*
 F: usertools/dpdk-telemetry*
@@ -1716,6 +1953,7 @@ F: doc/guides/howto/telemetry.rst
 
 BPF
 M: Konstantin Ananyev <[email protected]>
+S: Supported
 F: lib/bpf/
 F: examples/bpf/
 F: app/test/test_bpf.c
@@ -1727,6 +1965,7 @@ M: Jerin Jacob <[email protected]>
 M: Kiran Kumar K <[email protected]>
 M: Nithin Dabilpuram <[email protected]>
 M: Zhirun Yan <[email protected]>
+S: Supported
 F: lib/graph/
 F: doc/guides/prog_guide/graph_lib.rst
 F: app/test/test_graph*
@@ -1736,6 +1975,7 @@ F: doc/guides/sample_app_ug/l3_forward_graph.rst
 Nodes - EXPERIMENTAL
 M: Nithin Dabilpuram <[email protected]>
 M: Pavan Nikhilesh <[email protected]>
+S: Supported
 F: lib/node/
 
 
@@ -1743,6 +1983,7 @@ Test Applications
 -----------------
 
 Unit tests framework
+S: Maintained
 F: app/test/commands.c
 F: app/test/has_hugepage.py
 F: app/test/packet_burst_generator.c
@@ -1758,45 +1999,53 @@ F: app/test/virtual_pmd.h
 
 Sample packet helper functions for unit test
 M: Reshma Pattan <[email protected]>
+S: Supported
 F: app/test/sample_packet_forward.c
 F: app/test/sample_packet_forward.h
 
 Networking drivers testing tool
 M: Aman Singh <[email protected]>
 M: Yuying Zhang <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-net
 F: app/test-pmd/
 F: doc/guides/testpmd_app_ug/
 
 DMA device performance tool
 M: Cheng Jiang <[email protected]>
+S: Supported
 F: app/test-dma-perf/
 F: doc/guides/tools/dmaperf.rst
 
 Flow performance tool
 M: Wisam Jaddo <[email protected]>
+S: Supported
 F: app/test-flow-perf/
 F: doc/guides/tools/flow-perf.rst
 
 Security performance tool
 M: Anoob Joseph <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: app/test-security-perf/
 F: doc/guides/tools/securityperf.rst
 
 Compression performance test application
 T: git://dpdk.org/next/dpdk-next-crypto
+S: Orphan
 F: app/test-compress-perf/
 F: doc/guides/tools/comp_perf.rst
 
 Crypto performance test application
 M: Ciara Power <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-crypto
 F: app/test-crypto-perf/
 F: doc/guides/tools/cryptoperf.rst
 
 Eventdev test application
 M: Jerin Jacob <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: app/test-eventdev/
 F: doc/guides/tools/testeventdev.rst
@@ -1805,12 +2054,14 @@ F: app/test/test_event_ring.c
 
 Procinfo tool
 M: Reshma Pattan <[email protected]>
+S: Supported
 F: app/proc-info/
 F: doc/guides/tools/proc_info.rst
 
 DTS
 M: Lijuan Tu <[email protected]>
 M: Juraj Linkeš <[email protected]>
+S: Supported
 F: dts/
 F: devtools/dts-check-format.sh
 F: doc/guides/tools/dts.rst
@@ -1820,77 +2071,92 @@ Other Example Applications
 --------------------------
 
 Ethtool example
+S: Orphan
 F: examples/ethtool/
 F: doc/guides/sample_app_ug/ethtool.rst
 
 FIPS validation example
 M: Brian Dooley <[email protected]>
 M: Gowrishankar Muthukrishnan <[email protected]>
+S: Supported
 F: examples/fips_validation/
 F: doc/guides/sample_app_ug/fips_validation.rst
 
 Flow filtering example
 M: Ori Kam <[email protected]>
+S: Supported
 F: examples/flow_filtering/
 F: doc/guides/sample_app_ug/flow_filtering.rst
 
 Helloworld example
 M: Bruce Richardson <[email protected]>
+S: Supported
 F: examples/helloworld/
 F: doc/guides/sample_app_ug/hello_world.rst
 
 IPsec security gateway example
 M: Radu Nicolau <[email protected]>
 M: Akhil Goyal <[email protected]>
+S: Supported
 F: examples/ipsec-secgw/
 F: doc/guides/sample_app_ug/ipsec_secgw.rst
 
 IPv4 multicast example
+S: Orphan
 F: examples/ipv4_multicast/
 F: doc/guides/sample_app_ug/ipv4_multicast.rst
 
 L2 forwarding example
 M: Bruce Richardson <[email protected]>
+S: Supported
 F: examples/l2fwd/
 F: doc/guides/sample_app_ug/l2_forward_real_virtual.rst
 
 L2 forwarding with cache allocation example
 M: Tomasz Kantecki <[email protected]>
+S: Supported
 F: doc/guides/sample_app_ug/l2_forward_cat.rst
 F: examples/l2fwd-cat/
 
 L2 forwarding with eventdev example
 M: Sunil Kumar Kori <[email protected]>
 M: Pavan Nikhilesh <[email protected]>
+S: Supported
 T: git://dpdk.org/next/dpdk-next-eventdev
 F: examples/l2fwd-event/
 F: doc/guides/sample_app_ug/l2_forward_event.rst
 
 L3 forwarding example
+S: Maintained
 F: examples/l3fwd/
 F: doc/guides/sample_app_ug/l3_forward.rst
 
 Link status interrupt example
+S: Maintained
 F: examples/link_status_interrupt/
 F: doc/guides/sample_app_ug/link_status_intr.rst
 
 PTP client example
 M: Kirill Rybalchenko <[email protected]>
+S: Supported
 F: examples/ptpclient/
 
 Rx/Tx callbacks example
 M: Bruce Richardson <[email protected]>
 M: John McNamara <[email protected]>
+S: Supported
 F: examples/rxtx_callbacks/
 F: doc/guides/sample_app_ug/rxtx_callbacks.rst
 
 Skeleton example
 M: Bruce Richardson <[email protected]>
 M: John McNamara <[email protected]>
+S: Supported
 F: examples/skeleton/
 F: doc/guides/sample_app_ug/skeleton.rst
 
 VMDq examples
+S: Orphan
 F: examples/vmdq/
 F: doc/guides/sample_app_ug/vmdq_forwarding.rst
 F: examples/vmdq_dcb/
Signature · 1 line
2.39.2
#3 lore raw

PATCH v2 1/1 tap: fix build of TAP BPF program

In reply to Stephen Hemminger

The code was depending on old versions of headers from iproute2. Include those headers here so that build works.

The standalone build was also broken because by
commit ef5baf3486e0 ("replace packed attributes")
which introduced __rte_packed into this code.

This patch does not address several other issues with this BPF code. It should be using BTF and the conversion into array is a mess.

---
 drivers/net/tap/bpf_api.h         | 261 ++++++++++++++++++++++++++++++
 drivers/net/tap/bpf_elf.h         |  43 +++++
 drivers/net/tap/tap_bpf_program.c |  14 +-
 drivers/net/tap/tap_rss.h         |   2 +-
 4 files changed, 316 insertions(+), 4 deletions(-)
 create mode 100644 drivers/net/tap/bpf_api.h
 create mode 100644 drivers/net/tap/bpf_elf.h
drivers/net/tap/bpf_api.h new file +261 -0
new file mode 100644
index 000000000000..d13247199c9a
@@ -0,0 +1,261 @@
+#ifndef __BPF_API__
+#define __BPF_API__
+
+/* Note:
+ *
+ * This file can be included into eBPF kernel programs. It contains
+ * a couple of useful helper functions, map/section ABI (bpf_elf.h),
+ * misc macros and some eBPF specific LLVM built-ins.
+ */
+
+#include <stdint.h>
+
+#include <linux/pkt_cls.h>
+#include <linux/bpf.h>
+#include <linux/filter.h>
+
+#include <asm/byteorder.h>
+
+#include "bpf_elf.h"
+
+/** Misc macros. */
+
+#ifndef __stringify
+# define __stringify(X)		#X
+#endif
+
+#ifndef __maybe_unused
+# define __maybe_unused		__attribute__((__unused__))
+#endif
+
+#ifndef offsetof
+# define offsetof(TYPE, MEMBER)	__builtin_offsetof(TYPE, MEMBER)
+#endif
+
+#ifndef likely
+# define likely(X)		__builtin_expect(!!(X), 1)
+#endif
+
+#ifndef unlikely
+# define unlikely(X)		__builtin_expect(!!(X), 0)
+#endif
+
+#ifndef htons
+# define htons(X)		__constant_htons((X))
+#endif
+
+#ifndef ntohs
+# define ntohs(X)		__constant_ntohs((X))
+#endif
+
+#ifndef htonl
+# define htonl(X)		__constant_htonl((X))
+#endif
+
+#ifndef ntohl
+# define ntohl(X)		__constant_ntohl((X))
+#endif
+
+#ifndef __inline__
+# define __inline__		__attribute__((always_inline))
+#endif
+
+/** Section helper macros. */
+
+#ifndef __section
+# define __section(NAME)						\
+	__attribute__((section(NAME), used))
+#endif
+
+#ifndef __section_tail
+# define __section_tail(ID, KEY)					\
+	__section(__stringify(ID) "/" __stringify(KEY))
+#endif
+
+#ifndef __section_xdp_entry
+# define __section_xdp_entry						\
+	__section(ELF_SECTION_PROG)
+#endif
+
+#ifndef __section_cls_entry
+# define __section_cls_entry						\
+	__section(ELF_SECTION_CLASSIFIER)
+#endif
+
+#ifndef __section_act_entry
+# define __section_act_entry						\
+	__section(ELF_SECTION_ACTION)
+#endif
+
+#ifndef __section_lwt_entry
+# define __section_lwt_entry						\
+	__section(ELF_SECTION_PROG)
+#endif
+
+#ifndef __section_license
+# define __section_license						\
+	__section(ELF_SECTION_LICENSE)
+#endif
+
+#ifndef __section_maps
+# define __section_maps							\
+	__section(ELF_SECTION_MAPS)
+#endif
+
+/** Declaration helper macros. */
+
+#ifndef BPF_LICENSE
+# define BPF_LICENSE(NAME)						\
+	char ____license[] __section_license = NAME
+#endif
+
+/** Classifier helper */
+
+#ifndef BPF_H_DEFAULT
+# define BPF_H_DEFAULT	-1
+#endif
+
+/** BPF helper functions for tc. Individual flags are in linux/bpf.h */
+
+#ifndef __BPF_FUNC
+# define __BPF_FUNC(NAME, ...)						\
+	(* NAME)(__VA_ARGS__) __maybe_unused
+#endif
+
+#ifndef BPF_FUNC
+# define BPF_FUNC(NAME, ...)						\
+	__BPF_FUNC(NAME, __VA_ARGS__) = (void *) BPF_FUNC_##NAME
+#endif
+
+/* Map access/manipulation */
+static void *BPF_FUNC(map_lookup_elem, void *map, const void *key);
+static int BPF_FUNC(map_update_elem, void *map, const void *key,
+		    const void *value, uint32_t flags);
+static int BPF_FUNC(map_delete_elem, void *map, const void *key);
+
+/* Time access */
+static uint64_t BPF_FUNC(ktime_get_ns);
+
+/* Debugging */
+
+/* FIXME: __attribute__ ((format(printf, 1, 3))) not possible unless
+ * llvm bug https://llvm.org/bugs/show_bug.cgi?id=26243 gets resolved.
+ * It would require ____fmt to be made const, which generates a reloc
+ * entry (non-map).
+ */
+static void BPF_FUNC(trace_printk, const char *fmt, int fmt_size, ...);
+
+#ifndef printt
+# define printt(fmt, ...)						\
+	({								\
+		char ____fmt[] = fmt;					\
+		trace_printk(____fmt, sizeof(____fmt), ##__VA_ARGS__);	\
+	})
+#endif
+
+/* Random numbers */
+static uint32_t BPF_FUNC(get_prandom_u32);
+
+/* Tail calls */
+static void BPF_FUNC(tail_call, struct __sk_buff *skb, void *map,
+		     uint32_t index);
+
+/* System helpers */
+static uint32_t BPF_FUNC(get_smp_processor_id);
+static uint32_t BPF_FUNC(get_numa_node_id);
+
+/* Packet misc meta data */
+static uint32_t BPF_FUNC(get_cgroup_classid, struct __sk_buff *skb);
+static int BPF_FUNC(skb_under_cgroup, void *map, uint32_t index);
+
+static uint32_t BPF_FUNC(get_route_realm, struct __sk_buff *skb);
+static uint32_t BPF_FUNC(get_hash_recalc, struct __sk_buff *skb);
+static uint32_t BPF_FUNC(set_hash_invalid, struct __sk_buff *skb);
+
+/* Packet redirection */
+static int BPF_FUNC(redirect, int ifindex, uint32_t flags);
+static int BPF_FUNC(clone_redirect, struct __sk_buff *skb, int ifindex,
+		    uint32_t flags);
+
+/* Packet manipulation */
+static int BPF_FUNC(skb_load_bytes, struct __sk_buff *skb, uint32_t off,
+		    void *to, uint32_t len);
+static int BPF_FUNC(skb_store_bytes, struct __sk_buff *skb, uint32_t off,
+		    const void *from, uint32_t len, uint32_t flags);
+
+static int BPF_FUNC(l3_csum_replace, struct __sk_buff *skb, uint32_t off,
+		    uint32_t from, uint32_t to, uint32_t flags);
+static int BPF_FUNC(l4_csum_replace, struct __sk_buff *skb, uint32_t off,
+		    uint32_t from, uint32_t to, uint32_t flags);
+static int BPF_FUNC(csum_diff, const void *from, uint32_t from_size,
+		    const void *to, uint32_t to_size, uint32_t seed);
+static int BPF_FUNC(csum_update, struct __sk_buff *skb, uint32_t wsum);
+
+static int BPF_FUNC(skb_change_type, struct __sk_buff *skb, uint32_t type);
+static int BPF_FUNC(skb_change_proto, struct __sk_buff *skb, uint32_t proto,
+		    uint32_t flags);
+static int BPF_FUNC(skb_change_tail, struct __sk_buff *skb, uint32_t nlen,
+		    uint32_t flags);
+
+static int BPF_FUNC(skb_pull_data, struct __sk_buff *skb, uint32_t len);
+
+/* Event notification */
+static int __BPF_FUNC(skb_event_output, struct __sk_buff *skb, void *map,
+		      uint64_t index, const void *data, uint32_t size) =
+		      (void *) BPF_FUNC_perf_event_output;
+
+/* Packet vlan encap/decap */
+static int BPF_FUNC(skb_vlan_push, struct __sk_buff *skb, uint16_t proto,
+		    uint16_t vlan_tci);
+static int BPF_FUNC(skb_vlan_pop, struct __sk_buff *skb);
+
+/* Packet tunnel encap/decap */
+static int BPF_FUNC(skb_get_tunnel_key, struct __sk_buff *skb,
+		    struct bpf_tunnel_key *to, uint32_t size, uint32_t flags);
+static int BPF_FUNC(skb_set_tunnel_key, struct __sk_buff *skb,
+		    const struct bpf_tunnel_key *from, uint32_t size,
+		    uint32_t flags);
+
+static int BPF_FUNC(skb_get_tunnel_opt, struct __sk_buff *skb,
+		    void *to, uint32_t size);
+static int BPF_FUNC(skb_set_tunnel_opt, struct __sk_buff *skb,
+		    const void *from, uint32_t size);
+
+/** LLVM built-ins, mem*() routines work for constant size */
+
+#ifndef lock_xadd
+# define lock_xadd(ptr, val)	((void) __sync_fetch_and_add(ptr, val))
+#endif
+
+#ifndef memset
+# define memset(s, c, n)	__builtin_memset((s), (c), (n))
+#endif
+
+#ifndef memcpy
+# define memcpy(d, s, n)	__builtin_memcpy((d), (s), (n))
+#endif
+
+#ifndef memmove
+# define memmove(d, s, n)	__builtin_memmove((d), (s), (n))
+#endif
+
+/* FIXME: __builtin_memcmp() is not yet fully useable unless llvm bug
+ * https://llvm.org/bugs/show_bug.cgi?id=26218 gets resolved. Also
+ * this one would generate a reloc entry (non-map), otherwise.
+ */
+#if 0
+#ifndef memcmp
+# define memcmp(a, b, n)	__builtin_memcmp((a), (b), (n))
+#endif
+#endif
+
+unsigned long long load_byte(void *skb, unsigned long long off)
+	asm ("llvm.bpf.load.byte");
+
+unsigned long long load_half(void *skb, unsigned long long off)
+	asm ("llvm.bpf.load.half");
+
+unsigned long long load_word(void *skb, unsigned long long off)
+	asm ("llvm.bpf.load.word");
+
+#endif /* __BPF_API__ */
drivers/net/tap/bpf_elf.h new file +43 -0

43 lines not on this page · raw message

drivers/net/tap/tap_bpf_program.c +11 -3
index 20c310e5e7ba..daf30c4aba86 100644
@@ -1,5 +1,12 @@
 /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
  * Copyright 2017 Mellanox Technologies, Ltd
+ *
+ * This file is not built as part of normal DPDK build.
+ * It is used to generate the eBPF code for TAP RSS.
+ *
+ * To build it use:
+ *  clang -O2 -emit-llvm -c tap_bpf_program.c -o - | \
+ *   llc -march=bpf -filetype=obj -o tap_bpf_program.o
  */
 
 #include <stdint.h>
@@ -14,8 +21,9 @@
 #include <linux/ipv6.h>
 #include <linux/if_tunnel.h>
 #include <linux/filter.h>
-#include <linux/bpf.h>
 
+#include "bpf_api.h"
+#include "bpf_elf.h"
 #include "tap_rss.h"
 
 /** Create IPv4 address */
@@ -75,14 +83,14 @@ struct ipv4_l3_l4_tuple {
 	__u32    dst_addr;
 	__u16    dport;
 	__u16    sport;
-} __rte_packed;
+} __attribute__((packed));
 
 struct ipv6_l3_l4_tuple {
 	__u8        src_addr[16];
 	__u8        dst_addr[16];
 	__u16       dport;
 	__u16       sport;
-} __rte_packed;
+} __attribute__((packed));
 
 static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = {
 	0xd1, 0x81, 0xc6, 0x2c,
drivers/net/tap/tap_rss.h +1 -1
index 48c151cf6b68..dff46a012f94 100644
@@ -35,6 +35,6 @@ struct rss_key {
 	__u32 key_size;
 	__u32 queues[TAP_MAX_QUEUES];
 	__u32 nb_queues;
-} __rte_packed;
+} __attribute__((packed));
 
 #endif /* _TAP_RSS_H_ */
Signature · 1 line
2.39.2
#4 lore raw

PATCH v3 1/1 tap: fix build of TAP BPF program

In reply to Stephen Hemminger

Move the BPF program related code into a subdirectory. And add a Makefile for building it.

The code was depending on old versions of headers from iproute2. Include those headers here so that build works.

The standalone build was also broken because by
commit ef5baf3486e0 ("replace packed attributes")
which introduced __rte_packed into this code.

Add a python program to extract the resulting BPF into a format that can be consumed by the TAP driver.

Update the documentation.

---
 doc/guides/nics/tap.rst                     |  11 +-
 drivers/net/tap/bpf/.gitignore              |   1 +
 drivers/net/tap/bpf/Makefile                |  18 ++
 drivers/net/tap/bpf/bpf_api.h               | 261 ++++++++++++++++++++
 drivers/net/tap/bpf/bpf_elf.h               |  43 ++++
 drivers/net/tap/bpf/bpf_extract.py          |  80 ++++++
 drivers/net/tap/{ => bpf}/tap_bpf_program.c |   9 +-
 drivers/net/tap/tap_rss.h                   |   2 +-
 8 files changed, 413 insertions(+), 12 deletions(-)
 create mode 100644 drivers/net/tap/bpf/.gitignore
 create mode 100644 drivers/net/tap/bpf/Makefile
 create mode 100644 drivers/net/tap/bpf/bpf_api.h
 create mode 100644 drivers/net/tap/bpf/bpf_elf.h
 create mode 100644 drivers/net/tap/bpf/bpf_extract.py
 rename drivers/net/tap/{ => bpf}/tap_bpf_program.c (97%)
doc/guides/nics/tap.rst +4 -7
index 07df0d35a2ec..449e747994bd 100644
@@ -256,15 +256,12 @@ C functions under different ELF sections.
 
 2. Install ``LLVM`` library and ``clang`` compiler versions 3.7 and above
 
-3. Compile ``tap_bpf_program.c`` via ``LLVM`` into an object file::
+3. Use make to compile  `tap_bpf_program.c`` via ``LLVM`` into an object file
+   and extract the resulting instructions into ``tap_bpf_insn.h``.
 
-    clang -O2 -emit-llvm -c tap_bpf_program.c -o - | llc -march=bpf \
-    -filetype=obj -o <tap_bpf_program.o>
+    cd bpf; make
 
-
-4. Use a tool that receives two parameters: an eBPF object file and a section
-name, and prints out the section as a C array of eBPF instructions.
-Embed the C array in your TAP PMD tree.
+4. Recompile the TAP PMD.
 
 The C arrays are uploaded to the kernel using BPF system calls.
 
drivers/net/tap/bpf/.gitignore new file +1 -0
new file mode 100644
index 000000000000..30a258f1af3b
@@ -0,0 +1 @@
+tap_bpf_program.o
drivers/net/tap/bpf/Makefile new file +18 -0
new file mode 100644
index 000000000000..e5ae4e1f5adc
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# This file is not built as part of normal DPDK build.
+# It is used to generate the eBPF code for TAP RSS.
+CLANG=clang
+CLANG_OPTS=-O2
+TARGET=../tap_bpf_insns.h
+
+all: $(TARGET)
+
+clean:
+	rm tap_bpf_program.o $(TARGET)
+
+tap_bpf_program.o: tap_bpf_program.c
+	$(CLANG) $(CLANG_OPTS) -emit-llvm -c $< -o - | \
+	llc -march=bpf -filetype=obj -o $@
+
+$(TARGET): bpf_extract.py tap_bpf_program.o
+	python3 bpf_extract.py tap_bpf_program.o $@
drivers/net/tap/bpf/bpf_api.h new file +261 -0

261 lines not on this page · raw message

drivers/net/tap/bpf/bpf_elf.h new file +43 -0

43 lines not on this page · raw message

drivers/net/tap/bpf/bpf_extract.py new file +80 -0

80 lines not on this page · raw message

drivers/net/tap/bpf/tap_bpf_program.c renamed from drivers/net/tap/tap_bpf_program.c +5 -4
similarity index 97%
rename from drivers/net/tap/tap_bpf_program.c
rename to drivers/net/tap/bpf/tap_bpf_program.c
index 20c310e5e7ba..ff6f1606fb38 100644
@@ -14,9 +14,10 @@
 #include <linux/ipv6.h>
 #include <linux/if_tunnel.h>
 #include <linux/filter.h>
-#include <linux/bpf.h>
 
-#include "tap_rss.h"
+#include "bpf_api.h"
+#include "bpf_elf.h"
+#include "../tap_rss.h"
 
 /** Create IPv4 address */
 #define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \
@@ -75,14 +76,14 @@ struct ipv4_l3_l4_tuple {
 	__u32    dst_addr;
 	__u16    dport;
 	__u16    sport;
-} __rte_packed;
+} __attribute__((packed));
 
 struct ipv6_l3_l4_tuple {
 	__u8        src_addr[16];
 	__u8        dst_addr[16];
 	__u16       dport;
 	__u16       sport;
-} __rte_packed;
+} __attribute__((packed));
 
 static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = {
 	0xd1, 0x81, 0xc6, 0x2c,
drivers/net/tap/tap_rss.h +1 -1
index 48c151cf6b68..dff46a012f94 100644
@@ -35,6 +35,6 @@ struct rss_key {
 	__u32 key_size;
 	__u32 queues[TAP_MAX_QUEUES];
 	__u32 nb_queues;
-} __rte_packed;
+} __attribute__((packed));
 
 #endif /* _TAP_RSS_H_ */
Signature · 1 line
2.39.2
#5 lore raw

Re: [PATCH v3] tap: fix build of TAP BPF program

Quoted 6 lines · Stephen Hemminger

Move the BPF program related code into a subdirectory. And add a Makefile for building it.

The code was depending on old versions of headers from iproute2. Include those headers here so that build works.

Thanks Stephen, build works now.
But I am not sure about importing dependent headers to DPDK, could build work with latest external headers if application updated accordingly?

Quoted 10 lines

The standalone build was also broken because by
commit ef5baf3486e0 ("replace packed attributes")
which introduced __rte_packed into this code.

Add a python program to extract the resulting BPF into a format that can be consumed by the TAP driver.

Update the documentation.

<...>

drivers/net/tap/bpf/bpf_api.h line 3

Quoted 6 lines
drivers/net/tap/bpf/bpf_api.h new file +3 -0
@@ -0,0 +1,261 @@
+#ifndef __BPF_API__
+#define __BPF_API__
+

What should be License and Copyright of these files? Same for all imported headers.

#6 lore raw

Re: [PATCH v3] tap: fix build of TAP BPF program

Quoted 11 lines · On Fri, 21 Jul 2023 14:05:52 +0100 Ferruh Yigit <[email protected]> wrote:
Quoted 6 lines · Stephen Hemminger

Move the BPF program related code into a subdirectory. And add a Makefile for building it.

The code was depending on old versions of headers from iproute2. Include those headers here so that build works.

Thanks Stephen, build works now.
But I am not sure about importing dependent headers to DPDK, could build work with latest external headers if application updated accordingly?

These are not exported headers, it looks like Ophir was extracting them from iproute2. The headers are GPL-2.0 licensed; though just asked Daniel to allow BSD-3-clause version.

Not much is being used so we could just open code the parts that are used.

#7 lore raw

Re: [PATCH v3] tap: fix build of TAP BPF program

In reply to Stephen Hemminger
Quoted 10 lines · On Thu, 20 Jul 2023 16:25:49 -0700 Stephen Hemminger…

Move the BPF program related code into a subdirectory. And add a Makefile for building it.

The code was depending on old versions of headers from iproute2. Include those headers here so that build works.

The standalone build was also broken because by
commit ef5baf3486e0 ("replace packed attributes")
which introduced __rte_packed into this code.

Quoted 6 lines

Add a python program to extract the resulting BPF into a format that can be consumed by the TAP driver.

Update the documentation.

Note: there are a couple of bogus checkpatch warnings from this. The tap_bpf_program is not a regular DPDK library so it doesn't use the DPDK macros. And the bpf_api.h and bpf_elf.h are from iproute2 upstream and won't conform to DPDK checkpatch requirements.

#8 lore raw

Re: [PATCH v3] tap: fix build of TAP BPF program

In reply to Stephen Hemminger
Quoted 10 lines · On Thu, 20 Jul 2023 16:25:49 -0700 Stephen Hemminger…

Move the BPF program related code into a subdirectory. And add a Makefile for building it.

The code was depending on old versions of headers from iproute2. Include those headers here so that build works.

The standalone build was also broken because by
commit ef5baf3486e0 ("replace packed attributes")
which introduced __rte_packed into this code.

Quoted 6 lines

Add a python program to extract the resulting BPF into a format that can be consumed by the TAP driver.

Update the documentation.

Some backstory notes:

0. No longer work for Microsoft, so don't have Azure/Failsafe/TAP setup. Therefore compile tested only.

1. Went down this rabbit hole while trying to clear some of the DPDK patch backlog, and ran into this one fix for RSS on fragmented packets
https://patchwork.dpdk.org/project/dpdk/patch/[email protected]/

2. This version of patch only makes the BPF program build. It does not change the BPF program used currently by TAP device.

3. Doing build will change the bpf program since clang is probably optimizing more now.

Bottom line:
Merging the patch won't fix the RSS bug, it won't change the current TAP device behavior (same BPF). But it will allow for easier later fix in next release.

#9 lore raw

PATCH v4 1/1 tap: fix build of TAP BPF program

In reply to Stephen Hemminger

Move the BPF program related code into a subdirectory. And add a Makefile for building it.

The code depends on include files from iproute2. But these are not public headers which iproute2 exports as a package API. Therefore make a local copy here.

The standalone build was also broken because by
commit ef5baf3486e0 ("replace packed attributes")
which introduced __rte_packed into this code.

Add a python program to extract the resulting BPF into a format that can be consumed by the TAP driver.

Update the documentation.

---
v4 - update bpf_api.h and bpf_elf.h with SPDK headers from upstream

 doc/guides/nics/tap.rst                     |  11 +-
 drivers/net/tap/bpf/.gitignore              |   1 +
 drivers/net/tap/bpf/Makefile                |  18 ++
 drivers/net/tap/bpf/bpf_api.h               | 275 ++++++++++++++++++++
 drivers/net/tap/bpf/bpf_elf.h               |  53 ++++
 drivers/net/tap/bpf/bpf_extract.py          |  80 ++++++
 drivers/net/tap/{ => bpf}/tap_bpf_program.c |   9 +-
 drivers/net/tap/tap_rss.h                   |   2 +-
 8 files changed, 437 insertions(+), 12 deletions(-)
 create mode 100644 drivers/net/tap/bpf/.gitignore
 create mode 100644 drivers/net/tap/bpf/Makefile
 create mode 100644 drivers/net/tap/bpf/bpf_api.h
 create mode 100644 drivers/net/tap/bpf/bpf_elf.h
 create mode 100644 drivers/net/tap/bpf/bpf_extract.py
 rename drivers/net/tap/{ => bpf}/tap_bpf_program.c (97%)
doc/guides/nics/tap.rst +4 -7
index 07df0d35a2ec..449e747994bd 100644
@@ -256,15 +256,12 @@ C functions under different ELF sections.
 
 2. Install ``LLVM`` library and ``clang`` compiler versions 3.7 and above
 
-3. Compile ``tap_bpf_program.c`` via ``LLVM`` into an object file::
+3. Use make to compile  `tap_bpf_program.c`` via ``LLVM`` into an object file
+   and extract the resulting instructions into ``tap_bpf_insn.h``.
 
-    clang -O2 -emit-llvm -c tap_bpf_program.c -o - | llc -march=bpf \
-    -filetype=obj -o <tap_bpf_program.o>
+    cd bpf; make
 
-
-4. Use a tool that receives two parameters: an eBPF object file and a section
-name, and prints out the section as a C array of eBPF instructions.
-Embed the C array in your TAP PMD tree.
+4. Recompile the TAP PMD.
 
 The C arrays are uploaded to the kernel using BPF system calls.
 
drivers/net/tap/bpf/.gitignore new file +1 -0
new file mode 100644
index 000000000000..30a258f1af3b
@@ -0,0 +1 @@
+tap_bpf_program.o
drivers/net/tap/bpf/Makefile new file +18 -0
new file mode 100644
index 000000000000..e5ae4e1f5adc
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# This file is not built as part of normal DPDK build.
+# It is used to generate the eBPF code for TAP RSS.
+CLANG=clang
+CLANG_OPTS=-O2
+TARGET=../tap_bpf_insns.h
+
+all: $(TARGET)
+
+clean:
+	rm tap_bpf_program.o $(TARGET)
+
+tap_bpf_program.o: tap_bpf_program.c
+	$(CLANG) $(CLANG_OPTS) -emit-llvm -c $< -o - | \
+	llc -march=bpf -filetype=obj -o $@
+
+$(TARGET): bpf_extract.py tap_bpf_program.o
+	python3 bpf_extract.py tap_bpf_program.o $@
drivers/net/tap/bpf/bpf_api.h new file +275 -0

275 lines not on this page · raw message

drivers/net/tap/bpf/bpf_elf.h new file +53 -0

53 lines not on this page · raw message

drivers/net/tap/bpf/bpf_extract.py new file +80 -0

80 lines not on this page · raw message

drivers/net/tap/bpf/tap_bpf_program.c renamed from drivers/net/tap/tap_bpf_program.c +5 -4
similarity index 97%
rename from drivers/net/tap/tap_bpf_program.c
rename to drivers/net/tap/bpf/tap_bpf_program.c
index 20c310e5e7ba..ff6f1606fb38 100644
@@ -14,9 +14,10 @@
 #include <linux/ipv6.h>
 #include <linux/if_tunnel.h>
 #include <linux/filter.h>
-#include <linux/bpf.h>
 
-#include "tap_rss.h"
+#include "bpf_api.h"
+#include "bpf_elf.h"
+#include "../tap_rss.h"
 
 /** Create IPv4 address */
 #define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \
@@ -75,14 +76,14 @@ struct ipv4_l3_l4_tuple {
 	__u32    dst_addr;
 	__u16    dport;
 	__u16    sport;
-} __rte_packed;
+} __attribute__((packed));
 
 struct ipv6_l3_l4_tuple {
 	__u8        src_addr[16];
 	__u8        dst_addr[16];
 	__u16       dport;
 	__u16       sport;
-} __rte_packed;
+} __attribute__((packed));
 
 static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = {
 	0xd1, 0x81, 0xc6, 0x2c,
drivers/net/tap/tap_rss.h +1 -1
index 48c151cf6b68..dff46a012f94 100644
@@ -35,6 +35,6 @@ struct rss_key {
 	__u32 key_size;
 	__u32 queues[TAP_MAX_QUEUES];
 	__u32 nb_queues;
-} __rte_packed;
+} __attribute__((packed));
 
 #endif /* _TAP_RSS_H_ */
Signature · 1 line
2.39.2
#10 lore raw

cover net/tap: update and fix the BPF program

In reply to Stephen Hemminger

Update the documentation and tools to build the BPF program used by tap device. And apply fix to the RSS algorithm to correctly handle non-IP protocols.

Madhuker Mythri (1):
net/tap: Fixed RSS algorithm to support fragmented packets

Stephen Hemminger (2):
net/tap: support infrastructure to build the BPF filter net/tap; rebuild and update the BPF flow program

 doc/guides/nics/tap.rst                     |   11 +-
 drivers/net/tap/bpf/.gitignore              |    1 +
 drivers/net/tap/bpf/Makefile                |   18 +
 drivers/net/tap/bpf/bpf_api.h               |  275 ++
 drivers/net/tap/bpf/bpf_elf.h               |   53 +
 drivers/net/tap/bpf/bpf_extract.py          |   80 +
 drivers/net/tap/{ => bpf}/tap_bpf_program.c |   56 +-
 drivers/net/tap/tap_bpf_insns.h             | 2992 ++++++++++---------
 drivers/net/tap/tap_rss.h                   |    2 +-
 9 files changed, 1995 insertions(+), 1493 deletions(-)
 create mode 100644 drivers/net/tap/bpf/.gitignore
 create mode 100644 drivers/net/tap/bpf/Makefile
 create mode 100644 drivers/net/tap/bpf/bpf_api.h
 create mode 100644 drivers/net/tap/bpf/bpf_elf.h
 create mode 100644 drivers/net/tap/bpf/bpf_extract.py
 rename drivers/net/tap/{ => bpf}/tap_bpf_program.c (79%)
Signature · 1 line
2.41.0
#11 lore raw

PATCH 1/3 net/tap: support infrastructure to build the BPF filter

Move the BPF program related code into a subdirectory. And add a Makefile for building it.

The code depends on include files from iproute2. But these are not public headers which iproute2 exports as a package API. Therefore make a local copy here.

The standalone build was also broken because by
commit ef5baf3486e0 ("replace packed attributes")
which introduced __rte_packed into this code.

Add a python program to extract the resulting BPF into a format that can be consumed by the TAP driver.

Update the documentation.

---
 doc/guides/nics/tap.rst                     |  11 +-
 drivers/net/tap/bpf/.gitignore              |   1 +
 drivers/net/tap/bpf/Makefile                |  18 ++
 drivers/net/tap/bpf/bpf_api.h               | 275 ++++++++++++++++++++
 drivers/net/tap/bpf/bpf_elf.h               |  53 ++++
 drivers/net/tap/bpf/bpf_extract.py          |  80 ++++++
 drivers/net/tap/{ => bpf}/tap_bpf_program.c |   9 +-
 drivers/net/tap/tap_rss.h                   |   2 +-
 8 files changed, 437 insertions(+), 12 deletions(-)
 create mode 100644 drivers/net/tap/bpf/.gitignore
 create mode 100644 drivers/net/tap/bpf/Makefile
 create mode 100644 drivers/net/tap/bpf/bpf_api.h
 create mode 100644 drivers/net/tap/bpf/bpf_elf.h
 create mode 100644 drivers/net/tap/bpf/bpf_extract.py
 rename drivers/net/tap/{ => bpf}/tap_bpf_program.c (97%)
doc/guides/nics/tap.rst +4 -7
index 07df0d35a2..449e747994 100644
@@ -256,15 +256,12 @@ C functions under different ELF sections.
 
 2. Install ``LLVM`` library and ``clang`` compiler versions 3.7 and above
 
-3. Compile ``tap_bpf_program.c`` via ``LLVM`` into an object file::
+3. Use make to compile  `tap_bpf_program.c`` via ``LLVM`` into an object file
+   and extract the resulting instructions into ``tap_bpf_insn.h``.
 
-    clang -O2 -emit-llvm -c tap_bpf_program.c -o - | llc -march=bpf \
-    -filetype=obj -o <tap_bpf_program.o>
+    cd bpf; make
 
-
-4. Use a tool that receives two parameters: an eBPF object file and a section
-name, and prints out the section as a C array of eBPF instructions.
-Embed the C array in your TAP PMD tree.
+4. Recompile the TAP PMD.
 
 The C arrays are uploaded to the kernel using BPF system calls.
 
drivers/net/tap/bpf/.gitignore new file +1 -0
new file mode 100644
index 0000000000..30a258f1af
@@ -0,0 +1 @@
+tap_bpf_program.o
drivers/net/tap/bpf/Makefile new file +18 -0
new file mode 100644
index 0000000000..e5ae4e1f5a
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# This file is not built as part of normal DPDK build.
+# It is used to generate the eBPF code for TAP RSS.
+CLANG=clang
+CLANG_OPTS=-O2
+TARGET=../tap_bpf_insns.h
+
+all: $(TARGET)
+
+clean:
+	rm tap_bpf_program.o $(TARGET)
+
+tap_bpf_program.o: tap_bpf_program.c
+	$(CLANG) $(CLANG_OPTS) -emit-llvm -c $< -o - | \
+	llc -march=bpf -filetype=obj -o $@
+
+$(TARGET): bpf_extract.py tap_bpf_program.o
+	python3 bpf_extract.py tap_bpf_program.o $@
drivers/net/tap/bpf/bpf_api.h new file +275 -0

275 lines not on this page · raw message

drivers/net/tap/bpf/bpf_elf.h new file +53 -0

53 lines not on this page · raw message

drivers/net/tap/bpf/bpf_extract.py new file +80 -0

80 lines not on this page · raw message

drivers/net/tap/bpf/tap_bpf_program.c renamed from drivers/net/tap/tap_bpf_program.c +5 -4
similarity index 97%
rename from drivers/net/tap/tap_bpf_program.c
rename to drivers/net/tap/bpf/tap_bpf_program.c
index 20c310e5e7..ff6f1606fb 100644
@@ -14,9 +14,10 @@
 #include <linux/ipv6.h>
 #include <linux/if_tunnel.h>
 #include <linux/filter.h>
-#include <linux/bpf.h>
 
-#include "tap_rss.h"
+#include "bpf_api.h"
+#include "bpf_elf.h"
+#include "../tap_rss.h"
 
 /** Create IPv4 address */
 #define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \
@@ -75,14 +76,14 @@ struct ipv4_l3_l4_tuple {
 	__u32    dst_addr;
 	__u16    dport;
 	__u16    sport;
-} __rte_packed;
+} __attribute__((packed));
 
 struct ipv6_l3_l4_tuple {
 	__u8        src_addr[16];
 	__u8        dst_addr[16];
 	__u16       dport;
 	__u16       sport;
-} __rte_packed;
+} __attribute__((packed));
 
 static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = {
 	0xd1, 0x81, 0xc6, 0x2c,
drivers/net/tap/tap_rss.h +1 -1
index 48c151cf6b..dff46a012f 100644
@@ -35,6 +35,6 @@ struct rss_key {
 	__u32 key_size;
 	__u32 queues[TAP_MAX_QUEUES];
 	__u32 nb_queues;
-} __rte_packed;
+} __attribute__((packed));
 
 #endif /* _TAP_RSS_H_ */
Signature · 1 line
2.41.0
#12 lore raw

PATCH 2/3 net/tap: Fixed RSS algorithm to support fragmented packets

In reply to Stephen Hemminger

From: Madhuker Mythri <[email protected]>

As per analysis on Tap PMD, the existing RSS algorithm considering 4-tuple(Src-IP, Dst-IP, Src-port and Dst-port) and identification of fragment packets is not done, thus we are seeing all the fragmented chunks of single packet differs in RSS hash value and distributed across multiple queues.
The RSS algorithm assumes that, all the incoming IP packets are based on L4-protocol(UDP/TCP) and trying to fetch the L4 fields(Src-port and Dst-port) for each incoming packet, but for the fragmented chunks these L4-header will not be present(except for first packet) and should not consider in RSS hash for L4 header fields in-case of fragmented chunks. Which is a bug in the RSS algorithm implemented in the BPF functionality under TAP PMD.

So, modified the RSS eBPF C-program and generated the structure of C-array in the 'tap_bpf_insns.h' file, which is in eBPF byte-code instructions format.

Bugzilla Id: 870

---
 drivers/net/tap/bpf/tap_bpf_program.c | 47 ++++++++++++++++++++++-----
 1 file changed, 39 insertions(+), 8 deletions(-)
drivers/net/tap/bpf/tap_bpf_program.c +39 -8
index ff6f1606fb..3d431dfa43 100644
@@ -19,6 +19,8 @@
 #include "bpf_elf.h"
 #include "../tap_rss.h"
 
+#include "bpf_api.h"
+
 /** Create IPv4 address */
 #define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \
 		(((b) & 0xff) << 16) | \
@@ -132,6 +134,8 @@ rss_l3_l4(struct __sk_buff *skb)
 	__u8 *key = 0;
 	__u32 len;
 	__u32 queue = 0;
+	bool mf = 0;
+	__u16 frag_off = 0;
 
 	rsskey = map_lookup_elem(&map_keys, &key_idx);
 	if (!rsskey) {
@@ -156,6 +160,8 @@ rss_l3_l4(struct __sk_buff *skb)
 			return TC_ACT_OK;
 
 		__u8 *src_dst_addr = data + off + offsetof(struct iphdr, saddr);
+		__u8 *frag_off_addr = data + off + offsetof(struct iphdr, frag_off);
+		__u8 *prot_addr = data + off + offsetof(struct iphdr, protocol);
 		__u8 *src_dst_port = data + off + sizeof(struct iphdr);
 		struct ipv4_l3_l4_tuple v4_tuple = {
 			.src_addr = IPv4(*(src_dst_addr + 0),
@@ -166,11 +172,25 @@ rss_l3_l4(struct __sk_buff *skb)
 					*(src_dst_addr + 5),
 					*(src_dst_addr + 6),
 					*(src_dst_addr + 7)),
-			.sport = PORT(*(src_dst_port + 0),
-					*(src_dst_port + 1)),
-			.dport = PORT(*(src_dst_port + 2),
-					*(src_dst_port + 3)),
+			.sport = 0,
+			.dport = 0,
 		};
+		/** Fetch the L4-payer port numbers only in-case of TCP/UDP
+		 ** and also if the packet is not fragmented. Since fragmented
+		 ** chunks do not have L4 TCP/UDP header.
+		 **/
+		if (*prot_addr == IPPROTO_UDP || *prot_addr == IPPROTO_TCP) {
+			frag_off = PORT(*(frag_off_addr + 0),
+					*(frag_off_addr + 1));
+			mf = frag_off & 0x2000;
+			frag_off = frag_off & 0x1fff;
+			if (mf == 0 && frag_off == 0) {
+				v4_tuple.sport = PORT(*(src_dst_port + 0),
+						*(src_dst_port + 1));
+				v4_tuple.dport = PORT(*(src_dst_port + 2),
+						*(src_dst_port + 3));
+			}
+		}
 		__u8 input_len = sizeof(v4_tuple) / sizeof(__u32);
 		if (rsskey->hash_fields & (1 << HASH_FIELD_IPV4_L3))
 			input_len--;
@@ -183,6 +203,9 @@ rss_l3_l4(struct __sk_buff *skb)
 					offsetof(struct ipv6hdr, saddr);
 		__u8 *src_dst_port = data + off +
 					sizeof(struct ipv6hdr);
+		__u8 *next_hdr = data + off +
+					offsetof(struct ipv6hdr, nexthdr);
+
 		struct ipv6_l3_l4_tuple v6_tuple;
 		for (j = 0; j < 4; j++)
 			*((uint32_t *)&v6_tuple.src_addr + j) =
@@ -192,10 +215,18 @@ rss_l3_l4(struct __sk_buff *skb)
 			*((uint32_t *)&v6_tuple.dst_addr + j) =
 				__builtin_bswap32(*((uint32_t *)
 						src_dst_addr + 4 + j));
-		v6_tuple.sport = PORT(*(src_dst_port + 0),
-			      *(src_dst_port + 1));
-		v6_tuple.dport = PORT(*(src_dst_port + 2),
-			      *(src_dst_port + 3));
+
+		/** Fetch the L4 header port-numbers only if next-header
+		 * is TCP/UDP **/
+		if (*next_hdr == IPPROTO_UDP || *next_hdr == IPPROTO_TCP) {
+			v6_tuple.sport = PORT(*(src_dst_port + 0),
+				      *(src_dst_port + 1));
+			v6_tuple.dport = PORT(*(src_dst_port + 2),
+				      *(src_dst_port + 3));
+		} else {
+			v6_tuple.sport = 0;
+			v6_tuple.dport = 0;
+		}
 
 		__u8 input_len = sizeof(v6_tuple) / sizeof(__u32);
 		if (rsskey->hash_fields & (1 << HASH_FIELD_IPV6_L3))
Signature · 1 line
2.41.0
#13 lore raw

PATCH 3/3 net/tap; rebuild and update the BPF flow program

In reply to Stephen Hemminger

Rebuild with commit
c0335cc197 (tap; rebuild and update the BPF flow program, 2023-10-31)

---
 drivers/net/tap/tap_bpf_insns.h | 2992 ++++++++++++++++---------------
 1 file changed, 1519 insertions(+), 1473 deletions(-)
drivers/net/tap/tap_bpf_insns.h +1519 -1473
index 1a91bbad13..9efebea80a 100644
@@ -1,64 +1,62 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2017 Mellanox Technologies, Ltd
+ * Compiled BPF instructions do not edit
  */
 
 #include <tap_bpf.h>
 
-/* bpf_insn array matching cls_q section. See tap_bpf_program.c file */
-static struct bpf_insn cls_q_insns[] = {
+static const struct bpf_insn cls_q_insns = {
 	{0x61,    2,    1,       52, 0x00000000},
 	{0x18,    3,    0,        0, 0xdeadbeef},
-	{0x00,    0,    0,        0, 0x00000000},
+	{0x0,    0,    0,        0, 0x00000000},
 	{0x63,   10,    3,       -4, 0x00000000},
 	{0xb7,    0,    0,        0, 0x00000000},
 	{0x61,    3,   10,       -4, 0x00000000},
-	{0x07,    3,    0,        0, 0x7cafe800},
+	{0x7,    3,    0,        0, 0x7cafe800},
 	{0x67,    3,    0,        0, 0x00000020},
 	{0x77,    3,    0,        0, 0x00000020},
 	{0x5d,    2,    3,        4, 0x00000000},
 	{0xb7,    2,    0,        0, 0x00000000},
 	{0x63,    1,    2,       52, 0x00000000},
 	{0x18,    0,    0,        0, 0xffffffff},
-	{0x00,    0,    0,        0, 0x00000000},
+	{0x0,    0,    0,        0, 0x00000000},
 	{0x95,    0,    0,        0, 0x00000000},
 };
 
-/* bpf_insn array matching l3_l4 section. see tap_bpf_program.c file */
-static struct bpf_insn l3_l4_hash_insns[] = {
+static const struct bpf_insn l3_l4_hash_insns = {
 	{0xbf,    7,    1,        0, 0x00000000},
-	{0x61,    8,    7,       16, 0x00000000},
-	{0x61,    6,    7,       76, 0x00000000},
+	{0x61,    6,    7,       16, 0x00000000},
+	{0x61,    8,    7,       76, 0x00000000},
 	{0x61,    9,    7,       80, 0x00000000},
 	{0x18,    1,    0,        0, 0xdeadbeef},
-	{0x00,    0,    0,        0, 0x00000000},
+	{0x0,    0,    0,        0, 0x00000000},
 	{0x63,   10,    1,       -4, 0x00000000},
 	{0xbf,    2,   10,        0, 0x00000000},
-	{0x07,    2,    0,        0, 0xfffffffc},
-	{0x18,    1,    1,        0, 0x0000cafe},
-	{0x00,    0,    0,        0, 0x00000000},
+	{0x7,    2,    0,        0, 0xfffffffc},
+	{0x18,    1,    0,        0, 0x00000000},
+	{0x0,    0,    0,        0, 0x00000000},
 	{0x85,    0,    0,        0, 0x00000001},
 	{0x55,    0,    0,       21, 0x00000000},
 	{0xb7,    1,    0,        0, 0x00000a64},
 	{0x6b,   10,    1,      -16, 0x00000000},
 	{0x18,    1,    0,        0, 0x69666e6f},
-	{0x00,    0,    0,        0, 0x65727567},
+	{0x0,    0,    0,        0, 0x65727567},
 	{0x7b,   10,    1,      -24, 0x00000000},
 	{0x18,    1,    0,        0, 0x6e207369},
-	{0x00,    0,    0,        0, 0x6320746f},
+	{0x0,    0,    0,        0, 0x6320746f},
 	{0x7b,   10,    1,      -32, 0x00000000},
 	{0x18,    1,    0,        0, 0x20737372},
-	{0x00,    0,    0,        0, 0x2079656b},
+	{0x0,    0,    0,        0, 0x2079656b},
 	{0x7b,   10,    1,      -40, 0x00000000},
 	{0x18,    1,    0,        0, 0x68736168},
-	{0x00,    0,    0,        0, 0x203a2928},
+	{0x0,    0,    0,        0, 0x203a2928},
 	{0x7b,   10,    1,      -48, 0x00000000},
 	{0xb7,    7,    0,        0, 0x00000000},
 	{0x73,   10,    7,      -14, 0x00000000},
 	{0xbf,    1,   10,        0, 0x00000000},
-	{0x07,    1,    0,        0, 0xffffffd0},
+	{0x7,    1,    0,        0, 0xffffffd0},
 	{0xb7,    2,    0,        0, 0x00000023},
 	{0x85,    0,    0,        0, 0x00000006},
-	{0x05,    0,    0,     1632, 0x00000000},
+	{0x5,    0,    0,     1680, 0x00000000},
 	{0xb7,    1,    0,        0, 0x0000000e},
 	{0x61,    2,    7,       20, 0x00000000},
 	{0x15,    2,    0,       10, 0x00000000},
@@ -66,1630 +64,1678 @@ static struct bpf_insn l3_l4_hash_insns[] = {
 	{0x55,    2,    0,        8, 0x0000a888},
 	{0xbf,    2,    7,        0, 0x00000000},
 	{0xb7,    7,    0,        0, 0x00000000},
-	{0xbf,    1,    6,        0, 0x00000000},
-	{0x07,    1,    0,        0, 0x00000012},
-	{0x2d,    1,    9,     1622, 0x00000000},
+	{0xbf,    1,    8,        0, 0x00000000},
+	{0x7,    1,    0,        0, 0x00000012},
+	{0x2d,    1,    9,     1670, 0x00000000},
 	{0xb7,    1,    0,        0, 0x00000012},
-	{0x69,    8,    6,       16, 0x00000000},
+	{0x69,    6,    8,       16, 0x00000000},
 	{0xbf,    7,    2,        0, 0x00000000},
+	{0x57,    6,    0,        0, 0x0000ffff},
 	{0x7b,   10,    7,      -56, 0x00000000},
-	{0x57,    8,    0,        0, 0x0000ffff},
-	{0x15,    8,    0,      409, 0x0000dd86},
+	{0x15,    6,    0,      443, 0x0000dd86},
 	{0xb7,    7,    0,        0, 0x00000003},
-	{0x55,    8,    0,     1614, 0x00000008},
-	{0x0f,    6,    1,        0, 0x00000000},
+	{0x55,    6,    0,     1662, 0x00000008},
+	{0xf,    8,    1,        0, 0x00000000},
 	{0xb7,    7,    0,        0, 0x00000000},
-	{0xbf,    1,    6,        0, 0x00000000},
-	{0x07,    1,    0,        0, 0x00000018},
-	{0x2d,    1,    9,     1609, 0x00000000},
-	{0x71,    3,    6,       12, 0x00000000},
-	{0xbf,    1,    3,        0, 0x00000000},
-	{0x67,    1,    0,        0, 0x00000038},
-	{0xc7,    1,    0,        0, 0x00000020},
-	{0x77,    1,    0,        0, 0x0000001f},
-	{0x57,    1,    0,        0, 0x2cc681d1},
-	{0x67,    3,    0,        0, 0x00000018},
+	{0xbf,    1,    8,        0, 0x00000000},
+	{0x7,    1,    0,        0, 0x00000018},
+	{0x2d,    1,    9,     1657, 0x00000000},
+	{0xb7,    1,    0,        0, 0x00000000},
+	{0x71,    3,    8,       12, 0x00000000},
+	{0x71,    2,    8,        9, 0x00000000},
+	{0x15,    2,    0,        1, 0x00000011},
+	{0x55,    2,    0,       21, 0x00000006},
+	{0x71,    2,    8,        7, 0x00000000},
+	{0x71,    4,    8,        6, 0x00000000},
+	{0xbf,    5,    4,        0, 0x00000000},
+	{0x67,    5,    0,        0, 0x00000008},
+	{0x57,    5,    0,        0, 0x00001f00},
+	{0x4f,    5,    2,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000020},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0x55,    4,    0,       12, 0x00000000},
+	{0xbf,    2,    8,        0, 0x00000000},
+	{0x7,    2,    0,        0, 0x00000014},
+	{0x71,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000018},
+	{0x71,    1,    2,        1, 0x00000000},
+	{0x67,    1,    0,        0, 0x00000010},
+	{0x4f,    1,    4,        0, 0x00000000},
+	{0x71,    4,    2,        3, 0x00000000},
+	{0x4f,    1,    4,        0, 0x00000000},
+	{0x71,    2,    2,        2, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000008},
+	{0x4f,    1,    2,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x40000000},
+	{0x67,    4,    0,        0, 0x00000038},
+	{0xc7,    4,    0,        0, 0x00000038},
+	{0xb7,    2,    0,        0, 0x00000000},
+	{0x65,    4,    0,        1, 0xffffffff},
+	{0xb7,    7,    0,        0, 0x2cc681d1},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000040},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x598d03a2},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000020},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xb31a0745},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000010},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x66340e8a},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000008},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xcc681d15},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000004},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x98d03a2b},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000002},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x31a07456},
+	{0x71,    4,    8,       13, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000001},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x6340e8ad},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x67,    3,    0,        0, 0x00000038},
+	{0xc7,    3,    0,        0, 0x00000038},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0xc681d15b},
+	{0x6d,    2,    3,        1, 0x00000000},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000040},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x8d03a2b7},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000020},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x1a07456f},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x340e8ade},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000008},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x681d15bd},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000004},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xd03a2b7b},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000002},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xa07456f6},
+	{0x71,    3,    8,       14, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000001},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x40e8aded},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000038},
+	{0xc7,    4,    0,        0, 0x00000038},
+	{0xbf,    7,    5,        0, 0x00000000},
+	{0xa7,    7,    0,        0, 0x81d15bdb},
+	{0x6d,    2,    4,        1, 0x00000000},
+	{0xbf,    7,    5,        0, 0x00000000},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000040},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x03a2b7b7},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000020},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x07456f6f},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000010},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x0e8adedf},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000008},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x1d15bdbf},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000004},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x3a2b7b7e},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000002},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x7456f6fd},
+	{0x71,    4,    8,       15, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000001},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xe8adedfa},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x67,    3,    0,        0, 0x00000038},
+	{0xc7,    3,    0,        0, 0x00000038},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0xd15bdbf4},
+	{0x6d,    2,    3,        1, 0x00000000},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000040},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xa2b7b7e9},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000020},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x456f6fd3},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x8adedfa7},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000008},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x15bdbf4f},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000004},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x2b7b7e9e},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000002},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x56f6fd3d},
+	{0x71,    3,    8,       16, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000001},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xadedfa7b},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000038},
+	{0xc7,    4,    0,        0, 0x00000038},
+	{0xbf,    7,    5,        0, 0x00000000},
+	{0xa7,    7,    0,        0, 0x5bdbf4f7},
+	{0x6d,    2,    4,        1, 0x00000000},
+	{0xbf,    7,    5,        0, 0x00000000},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000040},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xb7b7e9ef},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000020},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x6f6fd3df},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000010},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xdedfa7bf},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000008},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xbdbf4f7f},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000004},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x7b7e9eff},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000002},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xf6fd3dff},
+	{0x71,    4,    8,       17, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000001},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xedfa7bfe},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x67,    3,    0,        0, 0x00000038},
+	{0xc7,    3,    0,        0, 0x00000038},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0xdbf4f7fc},
+	{0x6d,    2,    3,        1, 0x00000000},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000040},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xb7e9eff9},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000020},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x6fd3dff2},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xdfa7bfe5},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000008},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xbf4f7fca},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000004},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x7e9eff94},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000002},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xfd3dff28},
+	{0x71,    3,    8,       18, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000001},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xfa7bfe51},
+	{0xbf,    6,    3,        0, 0x00000000},
+	{0x67,    6,    0,        0, 0x00000038},
+	{0xc7,    6,    0,        0, 0x00000038},
+	{0xbf,    4,    5,        0, 0x00000000},
+	{0xa7,    4,    0,        0, 0xf4f7fca2},
+	{0x6d,    2,    6,        1, 0x00000000},
+	{0xbf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000040},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xe9eff945},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000020},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xd3dff28a},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000010},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xa7bfe514},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000008},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x4f7fca28},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000004},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x9eff9450},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000002},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x3dff28a0},
+	{0x71,    5,    8,       19, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000001},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x7bfe5141},
+	{0xbf,    3,    5,        0, 0x00000000},
+	{0x67,    3,    0,        0, 0x00000038},
+	{0xc7,    3,    0,        0, 0x00000038},
+	{0xbf,    7,    4,        0, 0x00000000},
+	{0xa7,    7,    0,        0, 0xf7fca283},
+	{0x6d,    2,    3,        1, 0x00000000},
+	{0xbf,    7,    4,        0, 0x00000000},
+	{0xbf,    3,    5,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000040},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xeff94506},
+	{0xbf,    3,    5,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000020},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xdff28a0c},
+	{0xbf,    3,    5,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xbfe51418},
+	{0xbf,    3,    5,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000008},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x7fca2831},
+	{0xbf,    3,    5,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000004},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xff945063},
+	{0xbf,    3,    5,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000002},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xff28a0c6},
+	{0x57,    5,    0,        0, 0x00000001},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xfe51418c},
+	{0xbf,    4,    1,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000020},
+	{0xc7,    4,    0,        0, 0x00000020},
+	{0xbf,    3,    7,        0, 0x00000000},
+	{0xa7,    3,    0,        0, 0xfca28319},
+	{0x6d,    2,    4,        1, 0x00000000},
+	{0xbf,    3,    7,        0, 0x00000000},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x40000000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0xf9450633},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x20000000},
+	{0x79,    6,   10,      -56, 0x00000000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0xf28a0c67},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x10000000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0xe51418ce},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x08000000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0xca28319d},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x04000000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x9450633b},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x02000000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x28a0c676},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x01000000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x51418ced},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00800000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0xa28319db},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00400000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x450633b6},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00200000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x8a0c676c},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00100000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x1418ced8},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00080000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x28319db1},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00040000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x50633b63},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00020000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0xa0c676c6},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00010000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x418ced8d},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00008000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x8319db1a},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00004000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x0633b634},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00002000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x0c676c68},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00001000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x18ced8d1},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000800},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x319db1a3},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000400},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x633b6347},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000200},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0xc676c68f},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000100},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x8ced8d1f},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000080},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x19db1a3e},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000040},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x33b6347d},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000020},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x676c68fa},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000010},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0xced8d1f4},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000008},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x9db1a3e9},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000004},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x3b6347d2},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000002},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x76c68fa5},
+	{0x57,    1,    0,        0, 0x00000001},
+	{0x15,    1,    0,     1194, 0x00000000},
+	{0xa7,    3,    0,        0, 0xed8d1f4a},
+	{0x5,    0,    0,     1192, 0x00000000},
+	{0xf,    8,    1,        0, 0x00000000},
+	{0xb7,    7,    0,        0, 0x00000000},
+	{0xbf,    1,    8,        0, 0x00000000},
+	{0x7,    1,    0,        0, 0x0000002c},
+	{0x2d,    1,    9,     1216, 0x00000000},
+	{0x61,    2,    8,        8, 0x00000000},
+	{0xdc,    2,    0,        0, 0x00000040},
+	{0xc7,    2,    0,        0, 0x00000020},
+	{0x71,    3,    8,        6, 0x00000000},
+	{0x15,    3,    0,        2, 0x00000011},
+	{0xb7,    1,    0,        0, 0x00000000},
+	{0x55,    3,    0,       12, 0x00000006},
+	{0xbf,    3,    8,        0, 0x00000000},
+	{0x7,    3,    0,        0, 0x00000028},
+	{0x71,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000018},
+	{0x71,    1,    3,        1, 0x00000000},
+	{0x67,    1,    0,        0, 0x00000010},
+	{0x4f,    1,    4,        0, 0x00000000},
+	{0x71,    4,    3,        3, 0x00000000},
+	{0x4f,    1,    4,        0, 0x00000000},
+	{0x71,    3,    3,        2, 0x00000000},
+	{0x67,    3,    0,        0, 0x00000008},
+	{0x4f,    1,    3,        0, 0x00000000},
+	{0xbf,    4,    2,        0, 0x00000000},
+	{0x77,    4,    0,        0, 0x0000001f},
+	{0x57,    4,    0,        0, 0x2cc681d1},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x40000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x598d03a2},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x20000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xb31a0745},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x10000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x66340e8a},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x08000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xcc681d15},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x04000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x98d03a2b},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x02000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x31a07456},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x01000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x6340e8ad},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00800000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xc681d15b},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00400000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x8d03a2b7},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00200000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x1a07456f},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00100000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x340e8ade},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00080000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x681d15bd},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00040000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xd03a2b7b},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00020000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xa07456f6},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00010000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x40e8aded},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00008000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x81d15bdb},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00004000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x03a2b7b7},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00002000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x07456f6f},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00001000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x0e8adedf},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000800},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x1d15bdbf},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000400},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x3a2b7b7e},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000200},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x7456f6fd},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000100},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xe8adedfa},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000080},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xd15bdbf4},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000040},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xa2b7b7e9},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000020},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x456f6fd3},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x8adedfa7},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000008},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x15bdbf4f},
+	{0x61,    3,    8,       12, 0x00000000},
+	{0xbf,    5,    2,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000004},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x2b7b7e9e},
+	{0xdc,    3,    0,        0, 0x00000040},
+	{0xbf,    5,    2,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000002},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x56f6fd3d},
+	{0xc7,    3,    0,        0, 0x00000020},
+	{0x57,    2,    0,        0, 0x00000001},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xadedfa7b},
 	{0xb7,    2,    0,        0, 0x00000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x598d03a2},
+	{0xbf,    5,    4,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x5bdbf4f7},
+	{0x6d,    2,    3,        1, 0x00000000},
+	{0xbf,    5,    4,        0, 0x00000000},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x40000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xb7b7e9ef},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x20000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb31a0745},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x6f6fd3df},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x10000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x66340e8a},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xdedfa7bf},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x08000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xcc681d15},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xbdbf4f7f},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x04000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x98d03a2b},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x7b7e9eff},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x02000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x31a07456},
-	{0x57,    3,    0,        0, 0x01000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6340e8ad},
-	{0x71,    3,    6,       13, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000010},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xf6fd3dff},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x01000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xedfa7bfe},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00800000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc681d15b},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xdbf4f7fc},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00400000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8d03a2b7},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xb7e9eff9},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00200000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1a07456f},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x6fd3dff2},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00100000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x340e8ade},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xdfa7bfe5},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00080000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x681d15bd},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xbf4f7fca},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00040000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd03a2b7b},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x7e9eff94},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00020000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa07456f6},
-	{0x57,    3,    0,        0, 0x00010000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x40e8aded},
-	{0x71,    3,    6,       14, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000008},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xfd3dff28},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00010000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xfa7bfe51},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00008000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x81d15bdb},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xf4f7fca2},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00004000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x03a2b7b7},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xe9eff945},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00002000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x07456f6f},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xd3dff28a},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00001000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x0e8adedf},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xa7bfe514},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000800},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1d15bdbf},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x4f7fca28},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000400},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3a2b7b7e},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x9eff9450},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000200},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7456f6fd},
-	{0x57,    3,    0,        0, 0x00000100},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe8adedfa},
-	{0x71,    3,    6,       15, 0x00000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x3dff28a0},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000100},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x7bfe5141},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000080},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd15bdbf4},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xf7fca283},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000040},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa2b7b7e9},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xeff94506},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000020},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x456f6fd3},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xdff28a0c},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000010},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8adedfa7},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xbfe51418},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000008},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x15bdbf4f},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000004},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x2b7b7e9e},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000002},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x56f6fd3d},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x7fca2831},
+	{0x61,    4,    8,       16, 0x00000000},
+	{0xbf,    6,    3,        0, 0x00000000},
+	{0x57,    6,    0,        0, 0x00000004},
+	{0x15,    6,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xff945063},
+	{0xdc,    4,    0,        0, 0x00000040},
+	{0xbf,    6,    3,        0, 0x00000000},
+	{0x57,    6,    0,        0, 0x00000002},
+	{0x15,    6,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xff28a0c6},
+	{0xc7,    4,    0,        0, 0x00000020},
 	{0x57,    3,    0,        0, 0x00000001},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xadedfa7b},
-	{0x71,    4,    6,       16, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000038},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0xb7,    3,    0,        0, 0xffffffff},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x5bdbf4f7},
-	{0x67,    4,    0,        0, 0x00000018},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb7b7e9ef},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6f6fd3df},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdedfa7bf},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xbdbf4f7f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7b7e9eff},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf6fd3dff},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xedfa7bfe},
-	{0x71,    4,    6,       17, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000010},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdbf4f7fc},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb7e9eff9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6fd3dff2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdfa7bfe5},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xbf4f7fca},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7e9eff94},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfd3dff28},
-	{0x57,    4,    0,        0, 0x00010000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfa7bfe51},
-	{0x71,    4,    6,       18, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000008},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf4f7fca2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe9eff945},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd3dff28a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa7bfe514},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x4f7fca28},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9eff9450},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3dff28a0},
-	{0x57,    4,    0,        0, 0x00000100},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7bfe5141},
-	{0x71,    4,    6,       19, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000080},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf7fca283},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xeff94506},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdff28a0c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xbfe51418},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7fca2831},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xff945063},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xff28a0c6},
-	{0x57,    4,    0,        0, 0x00000001},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfe51418c},
-	{0x71,    4,    6,       20, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000008},
-	{0x71,    5,    6,       21, 0x00000000},
-	{0x4f,    4,    5,        0, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000030},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfca28319},
-	{0x67,    4,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xfe51418c},
+	{0xbf,    7,    5,        0, 0x00000000},
+	{0xa7,    7,    0,        0, 0xfca28319},
+	{0x6d,    2,    4,        1, 0x00000000},
+	{0xbf,    7,    5,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x40000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf9450633},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xf9450633},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x20000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf28a0c67},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xf28a0c67},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x10000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe51418ce},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xe51418ce},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x08000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xca28319d},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xca28319d},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x04000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9450633b},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x9450633b},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x02000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x28a0c676},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x28a0c676},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x01000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x51418ced},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x51418ced},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00800000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa28319db},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xa28319db},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00400000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x450633b6},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x450633b6},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00200000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8a0c676c},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x8a0c676c},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00100000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1418ced8},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x1418ced8},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00080000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x28319db1},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x28319db1},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00040000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x50633b63},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x50633b63},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00020000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa0c676c6},
-	{0x57,    4,    0,        0, 0x00010000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x418ced8d},
-	{0x71,    3,    6,       22, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000008},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00008000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8319db1a},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00004000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x0633b634},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xa0c676c6},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00010000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x418ced8d},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00008000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x8319db1a},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00004000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x0633b634},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00002000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x0c676c68},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00001000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x18ced8d1},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000800},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x319db1a3},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000400},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x633b6347},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000200},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xc676c68f},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000100},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x8ced8d1f},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000080},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x19db1a3e},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000040},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x33b6347d},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000020},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x676c68fa},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xced8d1f4},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000008},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x9db1a3e9},
+	{0x61,    3,    8,       20, 0x00000000},
+	{0xbf,    5,    4,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000004},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x3b6347d2},
+	{0xdc,    3,    0,        0, 0x00000040},
+	{0xbf,    5,    4,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000002},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x76c68fa5},
+	{0xc7,    3,    0,        0, 0x00000020},
+	{0x57,    4,    0,        0, 0x00000001},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xed8d1f4a},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0xdb1a3e94},
+	{0x6d,    2,    3,        1, 0x00000000},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x40000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xb6347d28},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x20000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x6c68fa51},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x10000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xd8d1f4a3},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x08000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xb1a3e946},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x04000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x6347d28d},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x02000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xc68fa51a},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x01000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x8d1f4a35},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00800000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x1a3e946b},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00400000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x347d28d7},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00200000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x68fa51ae},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00100000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xd1f4a35c},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00080000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xa3e946b9},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00040000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x47d28d73},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00020000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x8fa51ae7},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00010000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x1f4a35cf},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00008000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x3e946b9e},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00004000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x7d28d73c},
+	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00002000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x0c676c68},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xfa51ae78},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00001000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x18ced8d1},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xf4a35cf1},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000800},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x319db1a3},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xe946b9e3},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000400},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x633b6347},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xd28d73c7},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000200},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc676c68f},
-	{0x57,    3,    0,        0, 0x00000100},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8ced8d1f},
-	{0x71,    3,    6,       23, 0x00000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xa51ae78e},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000100},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x4a35cf1c},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000080},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x19db1a3e},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x946b9e38},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000040},
-	{0x79,    5,   10,      -56, 0x00000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x33b6347d},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x28d73c71},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000020},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x676c68fa},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x51ae78e3},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000010},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xced8d1f4},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xa35cf1c6},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000008},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9db1a3e9},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000004},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3b6347d2},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000002},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x76c68fa5},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x46b9e38d},
+	{0x61,    4,    8,       24, 0x00000000},
+	{0xbf,    6,    3,        0, 0x00000000},
+	{0x57,    6,    0,        0, 0x00000004},
+	{0x15,    6,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x8d73c71b},
+	{0xdc,    4,    0,        0, 0x00000040},
+	{0xbf,    6,    3,        0, 0x00000000},
+	{0x57,    6,    0,        0, 0x00000002},
+	{0x15,    6,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x1ae78e36},
+	{0xc7,    4,    0,        0, 0x00000020},
 	{0x57,    3,    0,        0, 0x00000001},
-	{0x1d,    3,    2,     1177, 0x00000000},
-	{0xa7,    1,    0,        0, 0xed8d1f4a},
-	{0x05,    0,    0,     1175, 0x00000000},
-	{0x0f,    6,    1,        0, 0x00000000},
-	{0xb7,    7,    0,        0, 0x00000000},
-	{0xbf,    1,    6,        0, 0x00000000},
-	{0x07,    1,    0,        0, 0x0000002c},
-	{0x2d,    1,    9,     1202, 0x00000000},
-	{0x61,    4,    6,        8, 0x00000000},
-	{0xbf,    1,    4,        0, 0x00000000},
-	{0x67,    1,    0,        0, 0x00000038},
-	{0xc7,    1,    0,        0, 0x00000020},
-	{0x77,    1,    0,        0, 0x0000001f},
-	{0x57,    1,    0,        0, 0x2cc681d1},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x35cf1c6c},
+	{0xbf,    7,    5,        0, 0x00000000},
+	{0xa7,    7,    0,        0, 0x6b9e38d9},
+	{0x6d,    2,    4,        1, 0x00000000},
+	{0xbf,    7,    5,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0xb7,    2,    0,        0, 0x00000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x598d03a2},
+	{0x57,    3,    0,        0, 0x40000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xd73c71b2},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb31a0745},
+	{0x57,    3,    0,        0, 0x20000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xae78e364},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x66340e8a},
+	{0x57,    3,    0,        0, 0x10000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x5cf1c6c9},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000008},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xcc681d15},
+	{0x57,    3,    0,        0, 0x08000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xb9e38d92},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000004},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x98d03a2b},
+	{0x57,    3,    0,        0, 0x04000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x73c71b25},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000002},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x31a07456},
+	{0x57,    3,    0,        0, 0x02000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xe78e364b},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000001},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6340e8ad},
+	{0x57,    3,    0,        0, 0x01000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xcf1c6c96},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00800000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x9e38d92c},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00400000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x3c71b259},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00200000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x78e364b2},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00100000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xf1c6c964},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00080000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xe38d92c9},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00040000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xc71b2593},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00020000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x8e364b27},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00010000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x1c6c964e},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00008000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc681d15b},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x38d92c9c},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00004000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8d03a2b7},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x71b25938},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00002000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1a07456f},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xe364b270},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00001000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x340e8ade},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xc6c964e0},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000800},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x681d15bd},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x8d92c9c0},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000400},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd03a2b7b},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x1b259380},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000200},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa07456f6},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x364b2700},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000100},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x40e8aded},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x6c964e01},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000080},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xd92c9c03},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000040},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xb2593807},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000020},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x64b2700f},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xc964e01e},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000008},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x92c9c03d},
+	{0x61,    3,    8,       28, 0x00000000},
+	{0xbf,    5,    4,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000004},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x2593807a},
+	{0xdc,    3,    0,        0, 0x00000040},
+	{0xbf,    5,    4,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000002},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x4b2700f4},
+	{0xc7,    3,    0,        0, 0x00000020},
+	{0x57,    4,    0,        0, 0x00000001},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x964e01e8},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x2c9c03d1},
+	{0x6d,    2,    3,        1, 0x00000000},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x40000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x593807a3},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x20000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xb2700f46},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x10000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x64e01e8d},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x08000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xc9c03d1a},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x04000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x93807a35},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x02000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x2700f46b},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x01000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x4e01e8d6},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00800000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x9c03d1ad},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00400000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x3807a35b},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00200000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x700f46b6},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00100000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xe01e8d6c},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00080000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xc03d1ad9},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00040000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x807a35b3},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00020000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x00f46b66},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00010000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x01e8d6cc},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00008000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x03d1ad99},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00004000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x07a35b32},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00002000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x0f46b665},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00001000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x1e8d6cca},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000800},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x3d1ad994},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000400},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x7a35b328},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000200},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xf46b6651},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000100},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xe8d6cca2},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000080},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xd1ad9944},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000040},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xa35b3289},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000020},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x46b66512},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000010},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x8d6cca25},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000008},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x1ad9944a},
+	{0x61,    4,    8,       32, 0x00000000},
+	{0xbf,    6,    3,        0, 0x00000000},
+	{0x57,    6,    0,        0, 0x00000004},
+	{0x15,    6,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x35b32894},
+	{0xdc,    4,    0,        0, 0x00000040},
+	{0xbf,    6,    3,        0, 0x00000000},
+	{0x57,    6,    0,        0, 0x00000002},
+	{0x15,    6,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x6b665129},
+	{0xc7,    4,    0,        0, 0x00000020},
+	{0x57,    3,    0,        0, 0x00000001},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xd6cca253},
+	{0xbf,    7,    5,        0, 0x00000000},
+	{0xa7,    7,    0,        0, 0xad9944a7},
+	{0x6d,    2,    4,        1, 0x00000000},
+	{0xbf,    7,    5,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x40000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x5b32894f},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x20000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xb665129f},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x10000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x6cca253e},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x08000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xd9944a7d},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x04000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xb32894fb},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x02000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x665129f6},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x01000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xcca253ec},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00800000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x81d15bdb},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x9944a7d9},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00400000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x03a2b7b7},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x32894fb2},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00200000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x07456f6f},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x65129f65},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00100000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x0e8adedf},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xca253eca},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00080000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1d15bdbf},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x944a7d95},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00040000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3a2b7b7e},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x2894fb2a},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00020000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7456f6fd},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x5129f655},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00010000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe8adedfa},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xa253ecab},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00008000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x44a7d956},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00004000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x894fb2ac},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00002000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x129f6558},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00001000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x253ecab1},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000800},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x4a7d9563},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000400},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x94fb2ac7},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000200},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x29f6558f},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000100},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x53ecab1e},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000080},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xa7d9563d},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000040},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x4fb2ac7a},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000020},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x9f6558f5},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x3ecab1ea},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000008},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x7d9563d5},
+	{0x61,    3,    8,       36, 0x00000000},
 	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000020},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0xb7,    3,    0,        0, 0xffffffff},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd15bdbf4},
+	{0x57,    5,    0,        0, 0x00000004},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xfb2ac7ab},
+	{0xdc,    3,    0,        0, 0x00000040},
 	{0xbf,    5,    4,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000002},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xf6558f56},
+	{0xc7,    3,    0,        0, 0x00000020},
+	{0x57,    4,    0,        0, 0x00000001},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xecab1eac},
+	{0xbf,    4,    7,        0, 0x00000000},
+	{0xa7,    4,    0,        0, 0xd9563d59},
+	{0x6d,    2,    3,        1, 0x00000000},
+	{0xbf,    4,    7,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa2b7b7e9},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xb2ac7ab2},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x456f6fd3},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x79,    6,   10,      -56, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x6558f564},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8adedfa7},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xcab1eac8},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x15bdbf4f},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x9563d590},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x2b7b7e9e},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x2ac7ab20},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x56f6fd3d},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xadedfa7b},
-	{0x61,    4,    6,       12, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x558f5641},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x01000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xab1eac83},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00800000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x563d5906},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00400000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xac7ab20c},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00200000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x58f56418},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00100000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xb1eac831},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00080000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x63d59063},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00040000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xc7ab20c7},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00020000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x8f56418f},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00010000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x1eac831e},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00008000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x3d59063c},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00004000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x7ab20c78},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00002000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xf56418f0},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00001000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xeac831e1},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000800},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xd59063c2},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000400},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xab20c784},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000200},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x56418f09},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000100},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xac831e12},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000080},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x5bdbf4f7},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x59063c25},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000040},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb7b7e9ef},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xb20c784b},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000020},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6f6fd3df},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x6418f097},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000010},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdedfa7bf},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xc831e12f},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000008},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xbdbf4f7f},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x9063c25f},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000004},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7b7e9eff},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x20c784be},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000002},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf6fd3dff},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000001},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xedfa7bfe},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdbf4f7fc},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb7e9eff9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6fd3dff2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdfa7bfe5},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xbf4f7fca},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7e9eff94},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfd3dff28},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000100},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfa7bfe51},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf4f7fca2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe9eff945},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd3dff28a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa7bfe514},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x4f7fca28},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9eff9450},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3dff28a0},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00010000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7bfe5141},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000020},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf7fca283},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xeff94506},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdff28a0c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xbfe51418},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7fca2831},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xff945063},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xff28a0c6},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfe51418c},
-	{0x61,    4,    6,       16, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000080},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfca28319},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf9450633},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf28a0c67},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe51418ce},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xca28319d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9450633b},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x28a0c676},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000001},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x51418ced},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa28319db},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x450633b6},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8a0c676c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1418ced8},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x28319db1},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x50633b63},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa0c676c6},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000100},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x418ced8d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8319db1a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x0633b634},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x0c676c68},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x18ced8d1},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x319db1a3},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x633b6347},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc676c68f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00010000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8ced8d1f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000020},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x19db1a3e},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x33b6347d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x676c68fa},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xced8d1f4},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9db1a3e9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3b6347d2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x76c68fa5},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xed8d1f4a},
-	{0x61,    4,    6,       20, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000080},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdb1a3e94},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb6347d28},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6c68fa51},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd8d1f4a3},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb1a3e946},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6347d28d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc68fa51a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000001},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8d1f4a35},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1a3e946b},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x347d28d7},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x68fa51ae},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd1f4a35c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa3e946b9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x47d28d73},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8fa51ae7},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000100},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1f4a35cf},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3e946b9e},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7d28d73c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfa51ae78},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf4a35cf1},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe946b9e3},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd28d73c7},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa51ae78e},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00010000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x4a35cf1c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000020},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x946b9e38},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x28d73c71},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x51ae78e3},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa35cf1c6},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x46b9e38d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8d73c71b},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1ae78e36},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x35cf1c6c},
-	{0x61,    4,    6,       24, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000080},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6b9e38d9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd73c71b2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xae78e364},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x5cf1c6c9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb9e38d92},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x73c71b25},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe78e364b},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000001},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xcf1c6c96},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9e38d92c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3c71b259},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x78e364b2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf1c6c964},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe38d92c9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc71b2593},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8e364b27},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000100},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1c6c964e},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x38d92c9c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x71b25938},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe364b270},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc6c964e0},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8d92c9c0},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1b259380},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x364b2700},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00010000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6c964e01},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000020},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd92c9c03},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb2593807},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x64b2700f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc964e01e},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x92c9c03d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x2593807a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x4b2700f4},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x964e01e8},
-	{0x61,    4,    6,       28, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000080},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x2c9c03d1},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x593807a3},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb2700f46},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x64e01e8d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc9c03d1a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x93807a35},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x2700f46b},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000001},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x4e01e8d6},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9c03d1ad},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3807a35b},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x700f46b6},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe01e8d6c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc03d1ad9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x807a35b3},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x00f46b66},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000100},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x01e8d6cc},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x03d1ad99},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x07a35b32},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x0f46b665},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1e8d6cca},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3d1ad994},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7a35b328},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf46b6651},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00010000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe8d6cca2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000020},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd1ad9944},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa35b3289},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x46b66512},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8d6cca25},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1ad9944a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x35b32894},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6b665129},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd6cca253},
-	{0x61,    4,    6,       32, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000080},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xad9944a7},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x5b32894f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb665129f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6cca253e},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd9944a7d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb32894fb},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x665129f6},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000001},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xcca253ec},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9944a7d9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x32894fb2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x65129f65},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xca253eca},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x944a7d95},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x2894fb2a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x5129f655},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000100},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa253ecab},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x44a7d956},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x894fb2ac},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x129f6558},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x253ecab1},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x4a7d9563},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x94fb2ac7},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x29f6558f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00010000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x53ecab1e},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000020},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa7d9563d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x4fb2ac7a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9f6558f5},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3ecab1ea},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7d9563d5},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfb2ac7ab},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf6558f56},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xecab1eac},
-	{0x61,    4,    6,       36, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000080},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd9563d59},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb2ac7ab2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6558f564},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xcab1eac8},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9563d590},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x2ac7ab20},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x558f5641},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000001},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xab1eac83},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x563d5906},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xac7ab20c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x58f56418},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb1eac831},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x63d59063},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc7ab20c7},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8f56418f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000100},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1eac831e},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3d59063c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7ab20c78},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf56418f0},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xeac831e1},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd59063c2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xab20c784},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x56418f09},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00010000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xac831e12},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x418f097c},
+	{0x57,    3,    0,        0, 0x00000001},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x831e12f9},
+	{0xbf,    5,    1,        0, 0x00000000},
 	{0x67,    5,    0,        0, 0x00000020},
 	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x59063c25},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb20c784b},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6418f097},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc831e12f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9063c25f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x20c784be},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x418f097c},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x831e12f9},
-	{0x71,    4,    6,       40, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000008},
-	{0x71,    5,    6,       41, 0x00000000},
-	{0x4f,    4,    5,        0, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000030},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x063c25f3},
-	{0x67,    4,    0,        0, 0x00000010},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x40000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x0c784be7},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x20000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x18f097cf},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x10000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x31e12f9f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x08000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x63c25f3f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x04000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc784be7f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x02000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8f097cff},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x01000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1e12f9fe},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00800000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3c25f3fc},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00400000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x784be7f8},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00200000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf097cff0},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00100000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe12f9fe0},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00080000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc25f3fc1},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00040000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x84be7f83},
+	{0xa7,    3,    0,        0, 0x063c25f3},
+	{0x6d,    2,    5,        1, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00020000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x097cff07},
-	{0x57,    4,    0,        0, 0x00010000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x12f9fe0f},
-	{0x71,    3,    6,       42, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000008},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00008000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x25f3fc1f},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00004000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x4be7f83f},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00002000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x97cff07f},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00001000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x2f9fe0fe},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000800},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x5f3fc1fd},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000400},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xbe7f83fb},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000200},
-	{0x1d,    4,    2,        1, 0x00000000},
[… more lines in the raw message]

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Signature · 1 line
2.41.0

Part of the diff is not shown here. View the raw message.

#14 lore raw

v5 cover net/tap: build and fix for BPF program

In reply to Stephen Hemminger

Update the documentation and tools to build the BPF program used by tap device. And apply fix to the RSS algorithm to correctly handle non-IP protocols.

v5 - merge patches into series and fix rebuild

Madhuker Mythri (1):
net/tap: Fixed RSS algorithm to support fragmented packets

Stephen Hemminger (2):
net/tap: support infrastructure to build the BPF filter net/tap; rebuild and update the BPF flow program

 doc/guides/nics/tap.rst                     |   11 +-
 drivers/net/tap/bpf/.gitignore              |    1 +
 drivers/net/tap/bpf/Makefile                |   18 +
 drivers/net/tap/bpf/bpf_api.h               |  275 ++
 drivers/net/tap/bpf/bpf_elf.h               |   53 +
 drivers/net/tap/bpf/bpf_extract.py          |   86 +
 drivers/net/tap/{ => bpf}/tap_bpf_program.c |   57 +-
 drivers/net/tap/tap_bpf_insns.h             | 2988 ++++++++++---------
 drivers/net/tap/tap_rss.h                   |    2 +-
 9 files changed, 2000 insertions(+), 1491 deletions(-)
 create mode 100644 drivers/net/tap/bpf/.gitignore
 create mode 100644 drivers/net/tap/bpf/Makefile
 create mode 100644 drivers/net/tap/bpf/bpf_api.h
 create mode 100644 drivers/net/tap/bpf/bpf_elf.h
 create mode 100644 drivers/net/tap/bpf/bpf_extract.py
 rename drivers/net/tap/{ => bpf}/tap_bpf_program.c (79%)
Signature · 1 line
2.41.0
#15 lore raw

PATCH v5 1/3 net/tap: support infrastructure to build the BPF filter

Move the BPF program related code into a subdirectory. And add a Makefile for building it.

The code depends on include files from iproute2. But these are not public headers which iproute2 exports as a package API. Therefore make a local copy here.

The standalone build was also broken because by
commit ef5baf3486e0 ("replace packed attributes")
which introduced __rte_packed into this code.

Add a python program to extract the resulting BPF into a format that can be consumed by the TAP driver.

Update the documentation.

---
 doc/guides/nics/tap.rst                     |  11 +-
 drivers/net/tap/bpf/.gitignore              |   1 +
 drivers/net/tap/bpf/Makefile                |  18 ++
 drivers/net/tap/bpf/bpf_api.h               | 275 ++++++++++++++++++++
 drivers/net/tap/bpf/bpf_elf.h               |  53 ++++
 drivers/net/tap/bpf/bpf_extract.py          |  86 ++++++
 drivers/net/tap/{ => bpf}/tap_bpf_program.c |  10 +-
 drivers/net/tap/tap_rss.h                   |   2 +-
 8 files changed, 444 insertions(+), 12 deletions(-)
 create mode 100644 drivers/net/tap/bpf/.gitignore
 create mode 100644 drivers/net/tap/bpf/Makefile
 create mode 100644 drivers/net/tap/bpf/bpf_api.h
 create mode 100644 drivers/net/tap/bpf/bpf_elf.h
 create mode 100644 drivers/net/tap/bpf/bpf_extract.py
 rename drivers/net/tap/{ => bpf}/tap_bpf_program.c (96%)
doc/guides/nics/tap.rst +4 -7
index 07df0d35a2..449e747994 100644
@@ -256,15 +256,12 @@ C functions under different ELF sections.
 
 2. Install ``LLVM`` library and ``clang`` compiler versions 3.7 and above
 
-3. Compile ``tap_bpf_program.c`` via ``LLVM`` into an object file::
+3. Use make to compile  `tap_bpf_program.c`` via ``LLVM`` into an object file
+   and extract the resulting instructions into ``tap_bpf_insn.h``.
 
-    clang -O2 -emit-llvm -c tap_bpf_program.c -o - | llc -march=bpf \
-    -filetype=obj -o <tap_bpf_program.o>
+    cd bpf; make
 
-
-4. Use a tool that receives two parameters: an eBPF object file and a section
-name, and prints out the section as a C array of eBPF instructions.
-Embed the C array in your TAP PMD tree.
+4. Recompile the TAP PMD.
 
 The C arrays are uploaded to the kernel using BPF system calls.
 
drivers/net/tap/bpf/.gitignore new file +1 -0
new file mode 100644
index 0000000000..30a258f1af
@@ -0,0 +1 @@
+tap_bpf_program.o
drivers/net/tap/bpf/Makefile new file +18 -0
new file mode 100644
index 0000000000..e5ae4e1f5a
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# This file is not built as part of normal DPDK build.
+# It is used to generate the eBPF code for TAP RSS.
+CLANG=clang
+CLANG_OPTS=-O2
+TARGET=../tap_bpf_insns.h
+
+all: $(TARGET)
+
+clean:
+	rm tap_bpf_program.o $(TARGET)
+
+tap_bpf_program.o: tap_bpf_program.c
+	$(CLANG) $(CLANG_OPTS) -emit-llvm -c $< -o - | \
+	llc -march=bpf -filetype=obj -o $@
+
+$(TARGET): bpf_extract.py tap_bpf_program.o
+	python3 bpf_extract.py tap_bpf_program.o $@
drivers/net/tap/bpf/bpf_api.h new file +275 -0

275 lines not on this page · raw message

drivers/net/tap/bpf/bpf_elf.h new file +53 -0

53 lines not on this page · raw message

drivers/net/tap/bpf/bpf_extract.py new file +86 -0

86 lines not on this page · raw message

drivers/net/tap/bpf/tap_bpf_program.c renamed from drivers/net/tap/tap_bpf_program.c +6 -4
similarity index 96%
rename from drivers/net/tap/tap_bpf_program.c
rename to drivers/net/tap/bpf/tap_bpf_program.c
index 20c310e5e7..d65021d8a1 100644
@@ -14,9 +14,10 @@
 #include <linux/ipv6.h>
 #include <linux/if_tunnel.h>
 #include <linux/filter.h>
-#include <linux/bpf.h>
 
-#include "tap_rss.h"
+#include "bpf_api.h"
+#include "bpf_elf.h"
+#include "../tap_rss.h"
 
 /** Create IPv4 address */
 #define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \
@@ -56,6 +57,7 @@ __section("cls_q") int
 match_q(struct __sk_buff *skb)
 {
 	__u32 queue = skb->cb[1];
+	/* queue is set by tap_flow_bpf_cls_q() before load */
 	volatile __u32 q = 0xdeadbeef;
 	__u32 match_queue = QUEUE_OFFSET + q;
 
@@ -75,14 +77,14 @@ struct ipv4_l3_l4_tuple {
 	__u32    dst_addr;
 	__u16    dport;
 	__u16    sport;
-} __rte_packed;
+} __attribute__((packed));
 
 struct ipv6_l3_l4_tuple {
 	__u8        src_addr[16];
 	__u8        dst_addr[16];
 	__u16       dport;
 	__u16       sport;
-} __rte_packed;
+} __attribute__((packed));
 
 static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = {
 	0xd1, 0x81, 0xc6, 0x2c,
drivers/net/tap/tap_rss.h +1 -1
index 48c151cf6b..dff46a012f 100644
@@ -35,6 +35,6 @@ struct rss_key {
 	__u32 key_size;
 	__u32 queues[TAP_MAX_QUEUES];
 	__u32 nb_queues;
-} __rte_packed;
+} __attribute__((packed));
 
 #endif /* _TAP_RSS_H_ */
Signature · 1 line
2.41.0
#16 lore raw

PATCH v5 2/3 net/tap: Fixed RSS algorithm to support fragmented packets

In reply to Stephen Hemminger

From: Madhuker Mythri <[email protected]>

As per analysis on Tap PMD, the existing RSS algorithm considering 4-tuple(Src-IP, Dst-IP, Src-port and Dst-port) and identification of fragment packets is not done, thus we are seeing all the fragmented chunks of single packet differs in RSS hash value and distributed across multiple queues.
The RSS algorithm assumes that, all the incoming IP packets are based on L4-protocol(UDP/TCP) and trying to fetch the L4 fields(Src-port and Dst-port) for each incoming packet, but for the fragmented chunks these L4-header will not be present(except for first packet) and should not consider in RSS hash for L4 header fields in-case of fragmented chunks. Which is a bug in the RSS algorithm implemented in the BPF functionality under TAP PMD.

So, modified the RSS eBPF C-program and generated the structure of C-array in the 'tap_bpf_insns.h' file, which is in eBPF byte-code instructions format.

Bugzilla Id: 870

---
 drivers/net/tap/bpf/tap_bpf_program.c | 47 ++++++++++++++++++++++-----
 1 file changed, 39 insertions(+), 8 deletions(-)
drivers/net/tap/bpf/tap_bpf_program.c +39 -8
index d65021d8a1..369c7b107f 100644
@@ -19,6 +19,8 @@
 #include "bpf_elf.h"
 #include "../tap_rss.h"
 
+#include "bpf_api.h"
+
 /** Create IPv4 address */
 #define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \
 		(((b) & 0xff) << 16) | \
@@ -133,6 +135,8 @@ rss_l3_l4(struct __sk_buff *skb)
 	__u8 *key = 0;
 	__u32 len;
 	__u32 queue = 0;
+	bool mf = 0;
+	__u16 frag_off = 0;
 
 	rsskey = map_lookup_elem(&map_keys, &key_idx);
 	if (!rsskey) {
@@ -157,6 +161,8 @@ rss_l3_l4(struct __sk_buff *skb)
 			return TC_ACT_OK;
 
 		__u8 *src_dst_addr = data + off + offsetof(struct iphdr, saddr);
+		__u8 *frag_off_addr = data + off + offsetof(struct iphdr, frag_off);
+		__u8 *prot_addr = data + off + offsetof(struct iphdr, protocol);
 		__u8 *src_dst_port = data + off + sizeof(struct iphdr);
 		struct ipv4_l3_l4_tuple v4_tuple = {
 			.src_addr = IPv4(*(src_dst_addr + 0),
@@ -167,11 +173,25 @@ rss_l3_l4(struct __sk_buff *skb)
 					*(src_dst_addr + 5),
 					*(src_dst_addr + 6),
 					*(src_dst_addr + 7)),
-			.sport = PORT(*(src_dst_port + 0),
-					*(src_dst_port + 1)),
-			.dport = PORT(*(src_dst_port + 2),
-					*(src_dst_port + 3)),
+			.sport = 0,
+			.dport = 0,
 		};
+		/** Fetch the L4-payer port numbers only in-case of TCP/UDP
+		 ** and also if the packet is not fragmented. Since fragmented
+		 ** chunks do not have L4 TCP/UDP header.
+		 **/
+		if (*prot_addr == IPPROTO_UDP || *prot_addr == IPPROTO_TCP) {
+			frag_off = PORT(*(frag_off_addr + 0),
+					*(frag_off_addr + 1));
+			mf = frag_off & 0x2000;
+			frag_off = frag_off & 0x1fff;
+			if (mf == 0 && frag_off == 0) {
+				v4_tuple.sport = PORT(*(src_dst_port + 0),
+						*(src_dst_port + 1));
+				v4_tuple.dport = PORT(*(src_dst_port + 2),
+						*(src_dst_port + 3));
+			}
+		}
 		__u8 input_len = sizeof(v4_tuple) / sizeof(__u32);
 		if (rsskey->hash_fields & (1 << HASH_FIELD_IPV4_L3))
 			input_len--;
@@ -184,6 +204,9 @@ rss_l3_l4(struct __sk_buff *skb)
 					offsetof(struct ipv6hdr, saddr);
 		__u8 *src_dst_port = data + off +
 					sizeof(struct ipv6hdr);
+		__u8 *next_hdr = data + off +
+					offsetof(struct ipv6hdr, nexthdr);
+
 		struct ipv6_l3_l4_tuple v6_tuple;
 		for (j = 0; j < 4; j++)
 			*((uint32_t *)&v6_tuple.src_addr + j) =
@@ -193,10 +216,18 @@ rss_l3_l4(struct __sk_buff *skb)
 			*((uint32_t *)&v6_tuple.dst_addr + j) =
 				__builtin_bswap32(*((uint32_t *)
 						src_dst_addr + 4 + j));
-		v6_tuple.sport = PORT(*(src_dst_port + 0),
-			      *(src_dst_port + 1));
-		v6_tuple.dport = PORT(*(src_dst_port + 2),
-			      *(src_dst_port + 3));
+
+		/** Fetch the L4 header port-numbers only if next-header
+		 * is TCP/UDP **/
+		if (*next_hdr == IPPROTO_UDP || *next_hdr == IPPROTO_TCP) {
+			v6_tuple.sport = PORT(*(src_dst_port + 0),
+				      *(src_dst_port + 1));
+			v6_tuple.dport = PORT(*(src_dst_port + 2),
+				      *(src_dst_port + 3));
+		} else {
+			v6_tuple.sport = 0;
+			v6_tuple.dport = 0;
+		}
 
 		__u8 input_len = sizeof(v6_tuple) / sizeof(__u32);
 		if (rsskey->hash_fields & (1 << HASH_FIELD_IPV6_L3))
Signature · 1 line
2.41.0
#17 lore raw

PATCH v5 3/3 net/tap; rebuild and update the BPF flow program

In reply to Stephen Hemminger

Rebuild with commit
c0335cc197 (tap; rebuild and update the BPF flow program, 2023-10-31)

---
 drivers/net/tap/tap_bpf_insns.h | 2988 ++++++++++++++++---------------
 1 file changed, 1517 insertions(+), 1471 deletions(-)
drivers/net/tap/tap_bpf_insns.h +1517 -1471
index 1a91bbad13..f75165b70d 100644
@@ -1,64 +1,62 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright 2017 Mellanox Technologies, Ltd
+ * Compiled BPF instructions do not edit
  */
 
 #include <tap_bpf.h>
 
-/* bpf_insn array matching cls_q section. See tap_bpf_program.c file */
 static struct bpf_insn cls_q_insns[] = {
 	{0x61,    2,    1,       52, 0x00000000},
 	{0x18,    3,    0,        0, 0xdeadbeef},
-	{0x00,    0,    0,        0, 0x00000000},
+	{0x0,    0,    0,        0, 0x00000000},
 	{0x63,   10,    3,       -4, 0x00000000},
 	{0xb7,    0,    0,        0, 0x00000000},
 	{0x61,    3,   10,       -4, 0x00000000},
-	{0x07,    3,    0,        0, 0x7cafe800},
+	{0x7,    3,    0,        0, 0x7cafe800},
 	{0x67,    3,    0,        0, 0x00000020},
 	{0x77,    3,    0,        0, 0x00000020},
 	{0x5d,    2,    3,        4, 0x00000000},
 	{0xb7,    2,    0,        0, 0x00000000},
 	{0x63,    1,    2,       52, 0x00000000},
 	{0x18,    0,    0,        0, 0xffffffff},
-	{0x00,    0,    0,        0, 0x00000000},
+	{0x0,    0,    0,        0, 0x00000000},
 	{0x95,    0,    0,        0, 0x00000000},
 };
 
-/* bpf_insn array matching l3_l4 section. see tap_bpf_program.c file */
 static struct bpf_insn l3_l4_hash_insns[] = {
 	{0xbf,    7,    1,        0, 0x00000000},
-	{0x61,    8,    7,       16, 0x00000000},
-	{0x61,    6,    7,       76, 0x00000000},
+	{0x61,    6,    7,       16, 0x00000000},
+	{0x61,    8,    7,       76, 0x00000000},
 	{0x61,    9,    7,       80, 0x00000000},
 	{0x18,    1,    0,        0, 0xdeadbeef},
-	{0x00,    0,    0,        0, 0x00000000},
+	{0x0,    0,    0,        0, 0x00000000},
 	{0x63,   10,    1,       -4, 0x00000000},
 	{0xbf,    2,   10,        0, 0x00000000},
-	{0x07,    2,    0,        0, 0xfffffffc},
-	{0x18,    1,    1,        0, 0x0000cafe},
-	{0x00,    0,    0,        0, 0x00000000},
+	{0x7,    2,    0,        0, 0xfffffffc},
+	{0x18,    1,    0,        0, 0x00000000},
+	{0x0,    0,    0,        0, 0x00000000},
 	{0x85,    0,    0,        0, 0x00000001},
 	{0x55,    0,    0,       21, 0x00000000},
 	{0xb7,    1,    0,        0, 0x00000a64},
 	{0x6b,   10,    1,      -16, 0x00000000},
 	{0x18,    1,    0,        0, 0x69666e6f},
-	{0x00,    0,    0,        0, 0x65727567},
+	{0x0,    0,    0,        0, 0x65727567},
 	{0x7b,   10,    1,      -24, 0x00000000},
 	{0x18,    1,    0,        0, 0x6e207369},
-	{0x00,    0,    0,        0, 0x6320746f},
+	{0x0,    0,    0,        0, 0x6320746f},
 	{0x7b,   10,    1,      -32, 0x00000000},
 	{0x18,    1,    0,        0, 0x20737372},
-	{0x00,    0,    0,        0, 0x2079656b},
+	{0x0,    0,    0,        0, 0x2079656b},
 	{0x7b,   10,    1,      -40, 0x00000000},
 	{0x18,    1,    0,        0, 0x68736168},
-	{0x00,    0,    0,        0, 0x203a2928},
+	{0x0,    0,    0,        0, 0x203a2928},
 	{0x7b,   10,    1,      -48, 0x00000000},
 	{0xb7,    7,    0,        0, 0x00000000},
 	{0x73,   10,    7,      -14, 0x00000000},
 	{0xbf,    1,   10,        0, 0x00000000},
-	{0x07,    1,    0,        0, 0xffffffd0},
+	{0x7,    1,    0,        0, 0xffffffd0},
 	{0xb7,    2,    0,        0, 0x00000023},
 	{0x85,    0,    0,        0, 0x00000006},
-	{0x05,    0,    0,     1632, 0x00000000},
+	{0x5,    0,    0,     1680, 0x00000000},
 	{0xb7,    1,    0,        0, 0x0000000e},
 	{0x61,    2,    7,       20, 0x00000000},
 	{0x15,    2,    0,       10, 0x00000000},
@@ -66,1630 +64,1678 @@ static struct bpf_insn l3_l4_hash_insns[] = {
 	{0x55,    2,    0,        8, 0x0000a888},
 	{0xbf,    2,    7,        0, 0x00000000},
 	{0xb7,    7,    0,        0, 0x00000000},
-	{0xbf,    1,    6,        0, 0x00000000},
-	{0x07,    1,    0,        0, 0x00000012},
-	{0x2d,    1,    9,     1622, 0x00000000},
+	{0xbf,    1,    8,        0, 0x00000000},
+	{0x7,    1,    0,        0, 0x00000012},
+	{0x2d,    1,    9,     1670, 0x00000000},
 	{0xb7,    1,    0,        0, 0x00000012},
-	{0x69,    8,    6,       16, 0x00000000},
+	{0x69,    6,    8,       16, 0x00000000},
 	{0xbf,    7,    2,        0, 0x00000000},
+	{0x57,    6,    0,        0, 0x0000ffff},
 	{0x7b,   10,    7,      -56, 0x00000000},
-	{0x57,    8,    0,        0, 0x0000ffff},
-	{0x15,    8,    0,      409, 0x0000dd86},
+	{0x15,    6,    0,      443, 0x0000dd86},
 	{0xb7,    7,    0,        0, 0x00000003},
-	{0x55,    8,    0,     1614, 0x00000008},
-	{0x0f,    6,    1,        0, 0x00000000},
+	{0x55,    6,    0,     1662, 0x00000008},
+	{0xf,    8,    1,        0, 0x00000000},
 	{0xb7,    7,    0,        0, 0x00000000},
-	{0xbf,    1,    6,        0, 0x00000000},
-	{0x07,    1,    0,        0, 0x00000018},
-	{0x2d,    1,    9,     1609, 0x00000000},
-	{0x71,    3,    6,       12, 0x00000000},
-	{0xbf,    1,    3,        0, 0x00000000},
-	{0x67,    1,    0,        0, 0x00000038},
-	{0xc7,    1,    0,        0, 0x00000020},
-	{0x77,    1,    0,        0, 0x0000001f},
-	{0x57,    1,    0,        0, 0x2cc681d1},
-	{0x67,    3,    0,        0, 0x00000018},
+	{0xbf,    1,    8,        0, 0x00000000},
+	{0x7,    1,    0,        0, 0x00000018},
+	{0x2d,    1,    9,     1657, 0x00000000},
+	{0xb7,    1,    0,        0, 0x00000000},
+	{0x71,    3,    8,       12, 0x00000000},
+	{0x71,    2,    8,        9, 0x00000000},
+	{0x15,    2,    0,        1, 0x00000011},
+	{0x55,    2,    0,       21, 0x00000006},
+	{0x71,    2,    8,        7, 0x00000000},
+	{0x71,    4,    8,        6, 0x00000000},
+	{0xbf,    5,    4,        0, 0x00000000},
+	{0x67,    5,    0,        0, 0x00000008},
+	{0x57,    5,    0,        0, 0x00001f00},
+	{0x4f,    5,    2,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000020},
+	{0x4f,    4,    5,        0, 0x00000000},
+	{0x55,    4,    0,       12, 0x00000000},
+	{0xbf,    2,    8,        0, 0x00000000},
+	{0x7,    2,    0,        0, 0x00000014},
+	{0x71,    4,    2,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000018},
+	{0x71,    1,    2,        1, 0x00000000},
+	{0x67,    1,    0,        0, 0x00000010},
+	{0x4f,    1,    4,        0, 0x00000000},
+	{0x71,    4,    2,        3, 0x00000000},
+	{0x4f,    1,    4,        0, 0x00000000},
+	{0x71,    2,    2,        2, 0x00000000},
+	{0x67,    2,    0,        0, 0x00000008},
+	{0x4f,    1,    2,        0, 0x00000000},
 	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x40000000},
+	{0x67,    4,    0,        0, 0x00000038},
+	{0xc7,    4,    0,        0, 0x00000038},
+	{0xb7,    2,    0,        0, 0x00000000},
+	{0x65,    4,    0,        1, 0xffffffff},
+	{0xb7,    7,    0,        0, 0x2cc681d1},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000040},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x598d03a2},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000020},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xb31a0745},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000010},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x66340e8a},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000008},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xcc681d15},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000004},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x98d03a2b},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000002},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x31a07456},
+	{0x71,    4,    8,       13, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000001},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x6340e8ad},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x67,    3,    0,        0, 0x00000038},
+	{0xc7,    3,    0,        0, 0x00000038},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0xc681d15b},
+	{0x6d,    2,    3,        1, 0x00000000},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000040},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x8d03a2b7},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000020},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x1a07456f},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x340e8ade},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000008},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x681d15bd},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000004},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xd03a2b7b},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000002},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xa07456f6},
+	{0x71,    3,    8,       14, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000001},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x40e8aded},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000038},
+	{0xc7,    4,    0,        0, 0x00000038},
+	{0xbf,    7,    5,        0, 0x00000000},
+	{0xa7,    7,    0,        0, 0x81d15bdb},
+	{0x6d,    2,    4,        1, 0x00000000},
+	{0xbf,    7,    5,        0, 0x00000000},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000040},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x03a2b7b7},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000020},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x07456f6f},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000010},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x0e8adedf},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000008},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x1d15bdbf},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000004},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x3a2b7b7e},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000002},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x7456f6fd},
+	{0x71,    4,    8,       15, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000001},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xe8adedfa},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x67,    3,    0,        0, 0x00000038},
+	{0xc7,    3,    0,        0, 0x00000038},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0xd15bdbf4},
+	{0x6d,    2,    3,        1, 0x00000000},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000040},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xa2b7b7e9},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000020},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x456f6fd3},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x8adedfa7},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000008},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x15bdbf4f},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000004},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x2b7b7e9e},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000002},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x56f6fd3d},
+	{0x71,    3,    8,       16, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000001},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xadedfa7b},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000038},
+	{0xc7,    4,    0,        0, 0x00000038},
+	{0xbf,    7,    5,        0, 0x00000000},
+	{0xa7,    7,    0,        0, 0x5bdbf4f7},
+	{0x6d,    2,    4,        1, 0x00000000},
+	{0xbf,    7,    5,        0, 0x00000000},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000040},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xb7b7e9ef},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000020},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x6f6fd3df},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000010},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xdedfa7bf},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000008},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xbdbf4f7f},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000004},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x7b7e9eff},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000002},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xf6fd3dff},
+	{0x71,    4,    8,       17, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000001},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xedfa7bfe},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x67,    3,    0,        0, 0x00000038},
+	{0xc7,    3,    0,        0, 0x00000038},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0xdbf4f7fc},
+	{0x6d,    2,    3,        1, 0x00000000},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000040},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xb7e9eff9},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000020},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x6fd3dff2},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xdfa7bfe5},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000008},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xbf4f7fca},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000004},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x7e9eff94},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000002},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xfd3dff28},
+	{0x71,    3,    8,       18, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000001},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xfa7bfe51},
+	{0xbf,    6,    3,        0, 0x00000000},
+	{0x67,    6,    0,        0, 0x00000038},
+	{0xc7,    6,    0,        0, 0x00000038},
+	{0xbf,    4,    5,        0, 0x00000000},
+	{0xa7,    4,    0,        0, 0xf4f7fca2},
+	{0x6d,    2,    6,        1, 0x00000000},
+	{0xbf,    4,    5,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000040},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xe9eff945},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000020},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xd3dff28a},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000010},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xa7bfe514},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000008},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x4f7fca28},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000004},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x9eff9450},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000002},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x3dff28a0},
+	{0x71,    5,    8,       19, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000001},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x7bfe5141},
+	{0xbf,    3,    5,        0, 0x00000000},
+	{0x67,    3,    0,        0, 0x00000038},
+	{0xc7,    3,    0,        0, 0x00000038},
+	{0xbf,    7,    4,        0, 0x00000000},
+	{0xa7,    7,    0,        0, 0xf7fca283},
+	{0x6d,    2,    3,        1, 0x00000000},
+	{0xbf,    7,    4,        0, 0x00000000},
+	{0xbf,    3,    5,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000040},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xeff94506},
+	{0xbf,    3,    5,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000020},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xdff28a0c},
+	{0xbf,    3,    5,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xbfe51418},
+	{0xbf,    3,    5,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000008},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x7fca2831},
+	{0xbf,    3,    5,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000004},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xff945063},
+	{0xbf,    3,    5,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000002},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xff28a0c6},
+	{0x57,    5,    0,        0, 0x00000001},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xfe51418c},
+	{0xbf,    4,    1,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000020},
+	{0xc7,    4,    0,        0, 0x00000020},
+	{0xbf,    3,    7,        0, 0x00000000},
+	{0xa7,    3,    0,        0, 0xfca28319},
+	{0x6d,    2,    4,        1, 0x00000000},
+	{0xbf,    3,    7,        0, 0x00000000},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x40000000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0xf9450633},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x20000000},
+	{0x79,    6,   10,      -56, 0x00000000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0xf28a0c67},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x10000000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0xe51418ce},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x08000000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0xca28319d},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x04000000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x9450633b},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x02000000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x28a0c676},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x01000000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x51418ced},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00800000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0xa28319db},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00400000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x450633b6},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00200000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x8a0c676c},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00100000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x1418ced8},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00080000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x28319db1},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00040000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x50633b63},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00020000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0xa0c676c6},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00010000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x418ced8d},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00008000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x8319db1a},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00004000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x0633b634},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00002000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x0c676c68},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00001000},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x18ced8d1},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000800},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x319db1a3},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000400},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x633b6347},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000200},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0xc676c68f},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000100},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x8ced8d1f},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000080},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x19db1a3e},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000040},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x33b6347d},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000020},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x676c68fa},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000010},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0xced8d1f4},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000008},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x9db1a3e9},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000004},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x3b6347d2},
+	{0xbf,    2,    1,        0, 0x00000000},
+	{0x57,    2,    0,        0, 0x00000002},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    3,    0,        0, 0x76c68fa5},
+	{0x57,    1,    0,        0, 0x00000001},
+	{0x15,    1,    0,     1194, 0x00000000},
+	{0xa7,    3,    0,        0, 0xed8d1f4a},
+	{0x5,    0,    0,     1192, 0x00000000},
+	{0xf,    8,    1,        0, 0x00000000},
+	{0xb7,    7,    0,        0, 0x00000000},
+	{0xbf,    1,    8,        0, 0x00000000},
+	{0x7,    1,    0,        0, 0x0000002c},
+	{0x2d,    1,    9,     1216, 0x00000000},
+	{0x61,    2,    8,        8, 0x00000000},
+	{0xdc,    2,    0,        0, 0x00000040},
+	{0xc7,    2,    0,        0, 0x00000020},
+	{0x71,    3,    8,        6, 0x00000000},
+	{0x15,    3,    0,        2, 0x00000011},
+	{0xb7,    1,    0,        0, 0x00000000},
+	{0x55,    3,    0,       12, 0x00000006},
+	{0xbf,    3,    8,        0, 0x00000000},
+	{0x7,    3,    0,        0, 0x00000028},
+	{0x71,    4,    3,        0, 0x00000000},
+	{0x67,    4,    0,        0, 0x00000018},
+	{0x71,    1,    3,        1, 0x00000000},
+	{0x67,    1,    0,        0, 0x00000010},
+	{0x4f,    1,    4,        0, 0x00000000},
+	{0x71,    4,    3,        3, 0x00000000},
+	{0x4f,    1,    4,        0, 0x00000000},
+	{0x71,    3,    3,        2, 0x00000000},
+	{0x67,    3,    0,        0, 0x00000008},
+	{0x4f,    1,    3,        0, 0x00000000},
+	{0xbf,    4,    2,        0, 0x00000000},
+	{0x77,    4,    0,        0, 0x0000001f},
+	{0x57,    4,    0,        0, 0x2cc681d1},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x40000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x598d03a2},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x20000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xb31a0745},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x10000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x66340e8a},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x08000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xcc681d15},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x04000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x98d03a2b},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x02000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x31a07456},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x01000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x6340e8ad},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00800000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xc681d15b},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00400000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x8d03a2b7},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00200000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x1a07456f},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00100000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x340e8ade},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00080000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x681d15bd},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00040000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xd03a2b7b},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00020000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xa07456f6},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00010000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x40e8aded},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00008000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x81d15bdb},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00004000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x03a2b7b7},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00002000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x07456f6f},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00001000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x0e8adedf},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000800},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x1d15bdbf},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000400},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x3a2b7b7e},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000200},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x7456f6fd},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000100},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xe8adedfa},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000080},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xd15bdbf4},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000040},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xa2b7b7e9},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000020},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x456f6fd3},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x8adedfa7},
+	{0xbf,    3,    2,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000008},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x15bdbf4f},
+	{0x61,    3,    8,       12, 0x00000000},
+	{0xbf,    5,    2,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000004},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x2b7b7e9e},
+	{0xdc,    3,    0,        0, 0x00000040},
+	{0xbf,    5,    2,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000002},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x56f6fd3d},
+	{0xc7,    3,    0,        0, 0x00000020},
+	{0x57,    2,    0,        0, 0x00000001},
+	{0x15,    2,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xadedfa7b},
 	{0xb7,    2,    0,        0, 0x00000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x598d03a2},
+	{0xbf,    5,    4,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x5bdbf4f7},
+	{0x6d,    2,    3,        1, 0x00000000},
+	{0xbf,    5,    4,        0, 0x00000000},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x40000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xb7b7e9ef},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x20000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb31a0745},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x6f6fd3df},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x10000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x66340e8a},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xdedfa7bf},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x08000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xcc681d15},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xbdbf4f7f},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x04000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x98d03a2b},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x7b7e9eff},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x02000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x31a07456},
-	{0x57,    3,    0,        0, 0x01000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6340e8ad},
-	{0x71,    3,    6,       13, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000010},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xf6fd3dff},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x01000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xedfa7bfe},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00800000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc681d15b},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xdbf4f7fc},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00400000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8d03a2b7},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xb7e9eff9},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00200000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1a07456f},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x6fd3dff2},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00100000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x340e8ade},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xdfa7bfe5},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00080000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x681d15bd},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xbf4f7fca},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00040000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd03a2b7b},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x7e9eff94},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00020000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa07456f6},
-	{0x57,    3,    0,        0, 0x00010000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x40e8aded},
-	{0x71,    3,    6,       14, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000008},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xfd3dff28},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00010000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xfa7bfe51},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00008000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x81d15bdb},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xf4f7fca2},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00004000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x03a2b7b7},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xe9eff945},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00002000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x07456f6f},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xd3dff28a},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00001000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x0e8adedf},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xa7bfe514},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000800},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1d15bdbf},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x4f7fca28},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000400},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3a2b7b7e},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x9eff9450},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000200},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7456f6fd},
-	{0x57,    3,    0,        0, 0x00000100},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe8adedfa},
-	{0x71,    3,    6,       15, 0x00000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x3dff28a0},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000100},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x7bfe5141},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000080},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd15bdbf4},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xf7fca283},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000040},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa2b7b7e9},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xeff94506},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000020},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x456f6fd3},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xdff28a0c},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000010},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8adedfa7},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xbfe51418},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000008},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x15bdbf4f},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000004},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x2b7b7e9e},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000002},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x56f6fd3d},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x7fca2831},
+	{0x61,    4,    8,       16, 0x00000000},
+	{0xbf,    6,    3,        0, 0x00000000},
+	{0x57,    6,    0,        0, 0x00000004},
+	{0x15,    6,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xff945063},
+	{0xdc,    4,    0,        0, 0x00000040},
+	{0xbf,    6,    3,        0, 0x00000000},
+	{0x57,    6,    0,        0, 0x00000002},
+	{0x15,    6,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xff28a0c6},
+	{0xc7,    4,    0,        0, 0x00000020},
 	{0x57,    3,    0,        0, 0x00000001},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xadedfa7b},
-	{0x71,    4,    6,       16, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000038},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0xb7,    3,    0,        0, 0xffffffff},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x5bdbf4f7},
-	{0x67,    4,    0,        0, 0x00000018},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb7b7e9ef},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6f6fd3df},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdedfa7bf},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xbdbf4f7f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7b7e9eff},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf6fd3dff},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xedfa7bfe},
-	{0x71,    4,    6,       17, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000010},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdbf4f7fc},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb7e9eff9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6fd3dff2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdfa7bfe5},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xbf4f7fca},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7e9eff94},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfd3dff28},
-	{0x57,    4,    0,        0, 0x00010000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfa7bfe51},
-	{0x71,    4,    6,       18, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000008},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf4f7fca2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe9eff945},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd3dff28a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa7bfe514},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x4f7fca28},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9eff9450},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3dff28a0},
-	{0x57,    4,    0,        0, 0x00000100},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7bfe5141},
-	{0x71,    4,    6,       19, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000080},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf7fca283},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xeff94506},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdff28a0c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xbfe51418},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7fca2831},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xff945063},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xff28a0c6},
-	{0x57,    4,    0,        0, 0x00000001},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfe51418c},
-	{0x71,    4,    6,       20, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000008},
-	{0x71,    5,    6,       21, 0x00000000},
-	{0x4f,    4,    5,        0, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000030},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfca28319},
-	{0x67,    4,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xfe51418c},
+	{0xbf,    7,    5,        0, 0x00000000},
+	{0xa7,    7,    0,        0, 0xfca28319},
+	{0x6d,    2,    4,        1, 0x00000000},
+	{0xbf,    7,    5,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x40000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf9450633},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xf9450633},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x20000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf28a0c67},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xf28a0c67},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x10000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe51418ce},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xe51418ce},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x08000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xca28319d},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xca28319d},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x04000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9450633b},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x9450633b},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x02000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x28a0c676},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x28a0c676},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x01000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x51418ced},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x51418ced},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00800000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa28319db},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xa28319db},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00400000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x450633b6},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x450633b6},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00200000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8a0c676c},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x8a0c676c},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00100000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1418ced8},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x1418ced8},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00080000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x28319db1},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x28319db1},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00040000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x50633b63},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x50633b63},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00020000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa0c676c6},
-	{0x57,    4,    0,        0, 0x00010000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x418ced8d},
-	{0x71,    3,    6,       22, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000008},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00008000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8319db1a},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00004000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x0633b634},
-	{0xbf,    4,    3,        0, 0x00000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xa0c676c6},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00010000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x418ced8d},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00008000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x8319db1a},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00004000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x0633b634},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00002000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x0c676c68},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00001000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x18ced8d1},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000800},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x319db1a3},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000400},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x633b6347},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000200},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xc676c68f},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000100},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x8ced8d1f},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000080},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x19db1a3e},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000040},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x33b6347d},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000020},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x676c68fa},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xced8d1f4},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000008},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x9db1a3e9},
+	{0x61,    3,    8,       20, 0x00000000},
+	{0xbf,    5,    4,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000004},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x3b6347d2},
+	{0xdc,    3,    0,        0, 0x00000040},
+	{0xbf,    5,    4,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000002},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x76c68fa5},
+	{0xc7,    3,    0,        0, 0x00000020},
+	{0x57,    4,    0,        0, 0x00000001},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xed8d1f4a},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0xdb1a3e94},
+	{0x6d,    2,    3,        1, 0x00000000},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x40000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xb6347d28},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x20000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x6c68fa51},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x10000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xd8d1f4a3},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x08000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xb1a3e946},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x04000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x6347d28d},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x02000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xc68fa51a},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x01000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x8d1f4a35},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00800000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x1a3e946b},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00400000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x347d28d7},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00200000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x68fa51ae},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00100000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xd1f4a35c},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00080000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xa3e946b9},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00040000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x47d28d73},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00020000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x8fa51ae7},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00010000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x1f4a35cf},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00008000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x3e946b9e},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00004000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x7d28d73c},
+	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00002000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x0c676c68},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xfa51ae78},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00001000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x18ced8d1},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xf4a35cf1},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000800},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x319db1a3},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xe946b9e3},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000400},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x633b6347},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xd28d73c7},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000200},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc676c68f},
-	{0x57,    3,    0,        0, 0x00000100},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8ced8d1f},
-	{0x71,    3,    6,       23, 0x00000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xa51ae78e},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000100},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x4a35cf1c},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000080},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x19db1a3e},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x946b9e38},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000040},
-	{0x79,    5,   10,      -56, 0x00000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x33b6347d},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x28d73c71},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000020},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x676c68fa},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x51ae78e3},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000010},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xced8d1f4},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xa35cf1c6},
 	{0xbf,    4,    3,        0, 0x00000000},
 	{0x57,    4,    0,        0, 0x00000008},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9db1a3e9},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000004},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3b6347d2},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000002},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x76c68fa5},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x46b9e38d},
+	{0x61,    4,    8,       24, 0x00000000},
+	{0xbf,    6,    3,        0, 0x00000000},
+	{0x57,    6,    0,        0, 0x00000004},
+	{0x15,    6,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x8d73c71b},
+	{0xdc,    4,    0,        0, 0x00000040},
+	{0xbf,    6,    3,        0, 0x00000000},
+	{0x57,    6,    0,        0, 0x00000002},
+	{0x15,    6,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x1ae78e36},
+	{0xc7,    4,    0,        0, 0x00000020},
 	{0x57,    3,    0,        0, 0x00000001},
-	{0x1d,    3,    2,     1177, 0x00000000},
-	{0xa7,    1,    0,        0, 0xed8d1f4a},
-	{0x05,    0,    0,     1175, 0x00000000},
-	{0x0f,    6,    1,        0, 0x00000000},
-	{0xb7,    7,    0,        0, 0x00000000},
-	{0xbf,    1,    6,        0, 0x00000000},
-	{0x07,    1,    0,        0, 0x0000002c},
-	{0x2d,    1,    9,     1202, 0x00000000},
-	{0x61,    4,    6,        8, 0x00000000},
-	{0xbf,    1,    4,        0, 0x00000000},
-	{0x67,    1,    0,        0, 0x00000038},
-	{0xc7,    1,    0,        0, 0x00000020},
-	{0x77,    1,    0,        0, 0x0000001f},
-	{0x57,    1,    0,        0, 0x2cc681d1},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x35cf1c6c},
+	{0xbf,    7,    5,        0, 0x00000000},
+	{0xa7,    7,    0,        0, 0x6b9e38d9},
+	{0x6d,    2,    4,        1, 0x00000000},
+	{0xbf,    7,    5,        0, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000040},
-	{0xb7,    2,    0,        0, 0x00000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x598d03a2},
+	{0x57,    3,    0,        0, 0x40000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xd73c71b2},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000020},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb31a0745},
+	{0x57,    3,    0,        0, 0x20000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xae78e364},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000010},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x66340e8a},
+	{0x57,    3,    0,        0, 0x10000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x5cf1c6c9},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000008},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xcc681d15},
+	{0x57,    3,    0,        0, 0x08000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xb9e38d92},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000004},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x98d03a2b},
+	{0x57,    3,    0,        0, 0x04000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x73c71b25},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000002},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x31a07456},
+	{0x57,    3,    0,        0, 0x02000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xe78e364b},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00000001},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6340e8ad},
+	{0x57,    3,    0,        0, 0x01000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xcf1c6c96},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00800000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x9e38d92c},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00400000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x3c71b259},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00200000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x78e364b2},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00100000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xf1c6c964},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00080000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xe38d92c9},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00040000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xc71b2593},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00020000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x8e364b27},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00010000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x1c6c964e},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00008000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc681d15b},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x38d92c9c},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00004000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8d03a2b7},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x71b25938},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00002000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1a07456f},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xe364b270},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00001000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x340e8ade},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xc6c964e0},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000800},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x681d15bd},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x8d92c9c0},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000400},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd03a2b7b},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x1b259380},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000200},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa07456f6},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x364b2700},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00000100},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x40e8aded},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x6c964e01},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000080},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xd92c9c03},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000040},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xb2593807},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000020},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x64b2700f},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xc964e01e},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000008},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x92c9c03d},
+	{0x61,    3,    8,       28, 0x00000000},
+	{0xbf,    5,    4,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000004},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x2593807a},
+	{0xdc,    3,    0,        0, 0x00000040},
+	{0xbf,    5,    4,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000002},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x4b2700f4},
+	{0xc7,    3,    0,        0, 0x00000020},
+	{0x57,    4,    0,        0, 0x00000001},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x964e01e8},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xa7,    5,    0,        0, 0x2c9c03d1},
+	{0x6d,    2,    3,        1, 0x00000000},
+	{0xbf,    5,    7,        0, 0x00000000},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x40000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x593807a3},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x20000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xb2700f46},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x10000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x64e01e8d},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x08000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xc9c03d1a},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x04000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x93807a35},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x02000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x2700f46b},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x01000000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x4e01e8d6},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00800000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x9c03d1ad},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00400000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x3807a35b},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00200000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x700f46b6},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00100000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xe01e8d6c},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00080000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xc03d1ad9},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00040000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x807a35b3},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00020000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x00f46b66},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00010000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x01e8d6cc},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00008000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x03d1ad99},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00004000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x07a35b32},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00002000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x0f46b665},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00001000},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x1e8d6cca},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000800},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x3d1ad994},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000400},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x7a35b328},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000200},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xf46b6651},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000100},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xe8d6cca2},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000080},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xd1ad9944},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000040},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xa35b3289},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000020},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x46b66512},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000010},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x8d6cca25},
+	{0xbf,    4,    3,        0, 0x00000000},
+	{0x57,    4,    0,        0, 0x00000008},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x1ad9944a},
+	{0x61,    4,    8,       32, 0x00000000},
+	{0xbf,    6,    3,        0, 0x00000000},
+	{0x57,    6,    0,        0, 0x00000004},
+	{0x15,    6,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x35b32894},
+	{0xdc,    4,    0,        0, 0x00000040},
+	{0xbf,    6,    3,        0, 0x00000000},
+	{0x57,    6,    0,        0, 0x00000002},
+	{0x15,    6,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0x6b665129},
+	{0xc7,    4,    0,        0, 0x00000020},
+	{0x57,    3,    0,        0, 0x00000001},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    5,    0,        0, 0xd6cca253},
+	{0xbf,    7,    5,        0, 0x00000000},
+	{0xa7,    7,    0,        0, 0xad9944a7},
+	{0x6d,    2,    4,        1, 0x00000000},
+	{0xbf,    7,    5,        0, 0x00000000},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x40000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x5b32894f},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x20000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xb665129f},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x10000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x6cca253e},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x08000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xd9944a7d},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x04000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xb32894fb},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x02000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x665129f6},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x01000000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xcca253ec},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00800000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x81d15bdb},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x9944a7d9},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00400000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x03a2b7b7},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x32894fb2},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00200000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x07456f6f},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x65129f65},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00100000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x0e8adedf},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xca253eca},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00080000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1d15bdbf},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x944a7d95},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00040000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3a2b7b7e},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x2894fb2a},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00020000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7456f6fd},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x5129f655},
 	{0xbf,    3,    4,        0, 0x00000000},
 	{0x57,    3,    0,        0, 0x00010000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe8adedfa},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xa253ecab},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00008000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x44a7d956},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00004000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x894fb2ac},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00002000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x129f6558},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00001000},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x253ecab1},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000800},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x4a7d9563},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000400},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x94fb2ac7},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000200},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x29f6558f},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000100},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x53ecab1e},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000080},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xa7d9563d},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000040},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x4fb2ac7a},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000020},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x9f6558f5},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000010},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x3ecab1ea},
+	{0xbf,    3,    4,        0, 0x00000000},
+	{0x57,    3,    0,        0, 0x00000008},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0x7d9563d5},
+	{0x61,    3,    8,       36, 0x00000000},
 	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000020},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0xb7,    3,    0,        0, 0xffffffff},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd15bdbf4},
+	{0x57,    5,    0,        0, 0x00000004},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xfb2ac7ab},
+	{0xdc,    3,    0,        0, 0x00000040},
 	{0xbf,    5,    4,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000002},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xf6558f56},
+	{0xc7,    3,    0,        0, 0x00000020},
+	{0x57,    4,    0,        0, 0x00000001},
+	{0x15,    4,    0,        1, 0x00000000},
+	{0xa7,    7,    0,        0, 0xecab1eac},
+	{0xbf,    4,    7,        0, 0x00000000},
+	{0xa7,    4,    0,        0, 0xd9563d59},
+	{0x6d,    2,    3,        1, 0x00000000},
+	{0xbf,    4,    7,        0, 0x00000000},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa2b7b7e9},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xb2ac7ab2},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x456f6fd3},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x79,    6,   10,      -56, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x6558f564},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8adedfa7},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xcab1eac8},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x15bdbf4f},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x9563d590},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x2b7b7e9e},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x2ac7ab20},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x56f6fd3d},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xadedfa7b},
-	{0x61,    4,    6,       12, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x558f5641},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x01000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xab1eac83},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00800000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x563d5906},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00400000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xac7ab20c},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00200000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x58f56418},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00100000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xb1eac831},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00080000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x63d59063},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00040000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xc7ab20c7},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00020000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x8f56418f},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00010000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x1eac831e},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00008000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x3d59063c},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00004000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x7ab20c78},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00002000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xf56418f0},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00001000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xeac831e1},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000800},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xd59063c2},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000400},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xab20c784},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000200},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x56418f09},
+	{0xbf,    5,    3,        0, 0x00000000},
+	{0x57,    5,    0,        0, 0x00000100},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xac831e12},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000080},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x5bdbf4f7},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x59063c25},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000040},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb7b7e9ef},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xb20c784b},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000020},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6f6fd3df},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x6418f097},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000010},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdedfa7bf},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0xc831e12f},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000008},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xbdbf4f7f},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x9063c25f},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000004},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7b7e9eff},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x20c784be},
+	{0xbf,    5,    3,        0, 0x00000000},
 	{0x57,    5,    0,        0, 0x00000002},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf6fd3dff},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000001},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xedfa7bfe},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdbf4f7fc},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb7e9eff9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6fd3dff2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdfa7bfe5},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xbf4f7fca},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7e9eff94},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfd3dff28},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000100},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfa7bfe51},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf4f7fca2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe9eff945},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd3dff28a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa7bfe514},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x4f7fca28},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9eff9450},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3dff28a0},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00010000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7bfe5141},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000020},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf7fca283},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xeff94506},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdff28a0c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xbfe51418},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7fca2831},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xff945063},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xff28a0c6},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfe51418c},
-	{0x61,    4,    6,       16, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000080},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfca28319},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf9450633},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf28a0c67},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe51418ce},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xca28319d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9450633b},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x28a0c676},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000001},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x51418ced},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa28319db},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x450633b6},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8a0c676c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1418ced8},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x28319db1},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x50633b63},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa0c676c6},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000100},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x418ced8d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8319db1a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x0633b634},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x0c676c68},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x18ced8d1},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x319db1a3},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x633b6347},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc676c68f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00010000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8ced8d1f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000020},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x19db1a3e},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x33b6347d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x676c68fa},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xced8d1f4},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9db1a3e9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3b6347d2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x76c68fa5},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xed8d1f4a},
-	{0x61,    4,    6,       20, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000080},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xdb1a3e94},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb6347d28},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6c68fa51},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd8d1f4a3},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb1a3e946},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6347d28d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc68fa51a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000001},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8d1f4a35},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1a3e946b},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x347d28d7},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x68fa51ae},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd1f4a35c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa3e946b9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x47d28d73},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8fa51ae7},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000100},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1f4a35cf},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3e946b9e},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7d28d73c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfa51ae78},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf4a35cf1},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe946b9e3},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd28d73c7},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa51ae78e},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00010000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x4a35cf1c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000020},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x946b9e38},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x28d73c71},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x51ae78e3},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa35cf1c6},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x46b9e38d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8d73c71b},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1ae78e36},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x35cf1c6c},
-	{0x61,    4,    6,       24, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000080},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6b9e38d9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd73c71b2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xae78e364},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x5cf1c6c9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb9e38d92},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x73c71b25},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe78e364b},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000001},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xcf1c6c96},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9e38d92c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3c71b259},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x78e364b2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf1c6c964},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe38d92c9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc71b2593},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8e364b27},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000100},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1c6c964e},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x38d92c9c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x71b25938},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe364b270},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc6c964e0},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8d92c9c0},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1b259380},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x364b2700},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00010000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6c964e01},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000020},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd92c9c03},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb2593807},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x64b2700f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc964e01e},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x92c9c03d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x2593807a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x4b2700f4},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x964e01e8},
-	{0x61,    4,    6,       28, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000080},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x2c9c03d1},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x593807a3},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb2700f46},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x64e01e8d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc9c03d1a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x93807a35},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x2700f46b},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000001},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x4e01e8d6},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9c03d1ad},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3807a35b},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x700f46b6},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe01e8d6c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc03d1ad9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x807a35b3},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x00f46b66},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000100},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x01e8d6cc},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x03d1ad99},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x07a35b32},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x0f46b665},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1e8d6cca},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3d1ad994},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7a35b328},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf46b6651},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00010000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe8d6cca2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000020},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd1ad9944},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa35b3289},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x46b66512},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8d6cca25},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1ad9944a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x35b32894},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6b665129},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd6cca253},
-	{0x61,    4,    6,       32, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000080},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xad9944a7},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x5b32894f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb665129f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6cca253e},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd9944a7d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb32894fb},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x665129f6},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000001},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xcca253ec},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9944a7d9},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x32894fb2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x65129f65},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xca253eca},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x944a7d95},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x2894fb2a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x5129f655},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000100},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa253ecab},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x44a7d956},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x894fb2ac},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x129f6558},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x253ecab1},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x4a7d9563},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x94fb2ac7},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x29f6558f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00010000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x53ecab1e},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000020},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xa7d9563d},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x4fb2ac7a},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9f6558f5},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3ecab1ea},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7d9563d5},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xfb2ac7ab},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf6558f56},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xecab1eac},
-	{0x61,    4,    6,       36, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000080},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd9563d59},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000040},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb2ac7ab2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000020},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6558f564},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000010},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xcab1eac8},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000008},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9563d590},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000004},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x2ac7ab20},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000002},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x558f5641},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000001},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xab1eac83},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00008000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x563d5906},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00004000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xac7ab20c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00002000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x58f56418},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00001000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb1eac831},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000800},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x63d59063},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000400},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc7ab20c7},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000200},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8f56418f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00000100},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1eac831e},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00800000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3d59063c},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00400000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7ab20c78},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00200000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf56418f0},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00100000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xeac831e1},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00080000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xd59063c2},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00040000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xab20c784},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00020000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x56418f09},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x00010000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xac831e12},
-	{0xbf,    5,    4,        0, 0x00000000},
+	{0x15,    5,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x418f097c},
+	{0x57,    3,    0,        0, 0x00000001},
+	{0x15,    3,    0,        1, 0x00000000},
+	{0xa7,    4,    0,        0, 0x831e12f9},
+	{0xbf,    5,    1,        0, 0x00000000},
 	{0x67,    5,    0,        0, 0x00000020},
 	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x59063c25},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x40000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xb20c784b},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x20000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x6418f097},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x10000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc831e12f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x08000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x9063c25f},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x04000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x20c784be},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x57,    5,    0,        0, 0x02000000},
-	{0x1d,    5,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x418f097c},
-	{0x57,    4,    0,        0, 0x01000000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x831e12f9},
-	{0x71,    4,    6,       40, 0x00000000},
-	{0x67,    4,    0,        0, 0x00000008},
-	{0x71,    5,    6,       41, 0x00000000},
-	{0x4f,    4,    5,        0, 0x00000000},
-	{0xbf,    5,    4,        0, 0x00000000},
-	{0x67,    5,    0,        0, 0x00000030},
-	{0xc7,    5,    0,        0, 0x00000020},
-	{0x6d,    5,    3,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x063c25f3},
-	{0x67,    4,    0,        0, 0x00000010},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x40000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x0c784be7},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x20000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x18f097cf},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x10000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x31e12f9f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x08000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x63c25f3f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x04000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc784be7f},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x02000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x8f097cff},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x01000000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x1e12f9fe},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00800000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x3c25f3fc},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00400000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x784be7f8},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00200000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xf097cff0},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00100000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xe12f9fe0},
-	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00080000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xc25f3fc1},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00040000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x84be7f83},
+	{0xa7,    3,    0,        0, 0x063c25f3},
+	{0x6d,    2,    5,        1, 0x00000000},
 	{0xbf,    3,    4,        0, 0x00000000},
-	{0x57,    3,    0,        0, 0x00020000},
-	{0x1d,    3,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x097cff07},
-	{0x57,    4,    0,        0, 0x00010000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x12f9fe0f},
-	{0x71,    3,    6,       42, 0x00000000},
-	{0x67,    3,    0,        0, 0x00000008},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00008000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x25f3fc1f},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00004000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x4be7f83f},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00002000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x97cff07f},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00001000},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x2f9fe0fe},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000800},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x5f3fc1fd},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000400},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0xbe7f83fb},
-	{0xbf,    4,    3,        0, 0x00000000},
-	{0x57,    4,    0,        0, 0x00000200},
-	{0x1d,    4,    2,        1, 0x00000000},
-	{0xa7,    1,    0,        0, 0x7cff07f7},
-	{0x57,    3,    0,        0, 0x00000100},
[… more lines in the raw message]

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Signature · 1 line
2.41.0

Part of the diff is not shown here. View the raw message.

#18 lore raw

v6 cover net/tap: build and fix for BPF program

In reply to Stephen Hemminger

Update the documentation and tools to build the BPF program used by tap device. And apply fix to the RSS algorithm to correctly handle non-IP protocols.

v6 - cosmetic improvements to extract process
add better boilerplate and fix python lint warnings

Madhuker Mythri (1):
net/tap: Fixed RSS algorithm to support fragmented packets

Stephen Hemminger (2):
net/tap: support infrastructure to build the BPF filter net/tap; rebuild and update the BPF flow program

 doc/guides/nics/tap.rst                     |   11 +-
 drivers/net/tap/bpf/.gitignore              |    1 +
 drivers/net/tap/bpf/Makefile                |   18 +
 drivers/net/tap/bpf/bpf_api.h               |  275 ++
 drivers/net/tap/bpf/bpf_elf.h               |   53 +
 drivers/net/tap/bpf/bpf_extract.py          |   86 +
 drivers/net/tap/{ => bpf}/tap_bpf_program.c |   57 +-
 drivers/net/tap/tap_bpf_insns.h             | 2959 ++++++++++---------
 drivers/net/tap/tap_rss.h                   |    2 +-
 9 files changed, 1986 insertions(+), 1476 deletions(-)
 create mode 100644 drivers/net/tap/bpf/.gitignore
 create mode 100644 drivers/net/tap/bpf/Makefile
 create mode 100644 drivers/net/tap/bpf/bpf_api.h
 create mode 100644 drivers/net/tap/bpf/bpf_elf.h
 create mode 100644 drivers/net/tap/bpf/bpf_extract.py
 rename drivers/net/tap/{ => bpf}/tap_bpf_program.c (79%)
Signature · 1 line
2.41.0
#19 lore raw

PATCH v6 1/3 net/tap: support infrastructure to build the BPF filter

Move the BPF program related code into a subdirectory. And add a Makefile for building it.

The code depends on include files from iproute2. But these are not public headers which iproute2 exports as a package API. Therefore make a local copy here.

The standalone build was also broken because by
commit ef5baf3486e0 ("replace packed attributes")
which introduced __rte_packed into this code.

Add a python program to extract the resulting BPF into a format that can be consumed by the TAP driver.

Update the documentation.

---
 doc/guides/nics/tap.rst                     |  11 +-
 drivers/net/tap/bpf/.gitignore              |   1 +
 drivers/net/tap/bpf/Makefile                |  18 ++
 drivers/net/tap/bpf/bpf_api.h               | 275 ++++++++++++++++++++
 drivers/net/tap/bpf/bpf_elf.h               |  53 ++++
 drivers/net/tap/bpf/bpf_extract.py          |  86 ++++++
 drivers/net/tap/{ => bpf}/tap_bpf_program.c |  10 +-
 drivers/net/tap/tap_rss.h                   |   2 +-
 8 files changed, 444 insertions(+), 12 deletions(-)
 create mode 100644 drivers/net/tap/bpf/.gitignore
 create mode 100644 drivers/net/tap/bpf/Makefile
 create mode 100644 drivers/net/tap/bpf/bpf_api.h
 create mode 100644 drivers/net/tap/bpf/bpf_elf.h
 create mode 100644 drivers/net/tap/bpf/bpf_extract.py
 rename drivers/net/tap/{ => bpf}/tap_bpf_program.c (96%)
doc/guides/nics/tap.rst +4 -7
index 07df0d35a2..449e747994 100644
@@ -256,15 +256,12 @@ C functions under different ELF sections.
 
 2. Install ``LLVM`` library and ``clang`` compiler versions 3.7 and above
 
-3. Compile ``tap_bpf_program.c`` via ``LLVM`` into an object file::
+3. Use make to compile  `tap_bpf_program.c`` via ``LLVM`` into an object file
+   and extract the resulting instructions into ``tap_bpf_insn.h``.
 
-    clang -O2 -emit-llvm -c tap_bpf_program.c -o - | llc -march=bpf \
-    -filetype=obj -o <tap_bpf_program.o>
+    cd bpf; make
 
-
-4. Use a tool that receives two parameters: an eBPF object file and a section
-name, and prints out the section as a C array of eBPF instructions.
-Embed the C array in your TAP PMD tree.
+4. Recompile the TAP PMD.
 
 The C arrays are uploaded to the kernel using BPF system calls.
 
drivers/net/tap/bpf/.gitignore new file +1 -0
new file mode 100644
index 0000000000..30a258f1af
@@ -0,0 +1 @@
+tap_bpf_program.o
drivers/net/tap/bpf/Makefile new file +18 -0
new file mode 100644
index 0000000000..59844c616f
@@ -0,0 +1,18 @@
+# SPDX-License-Identifier: BSD-3-Clause
+# This file is not built as part of normal DPDK build.
+# It is used to generate the eBPF code for TAP RSS.
+CLANG=clang
+CLANG_OPTS=-O2
+TARGET=../tap_bpf_insns.h
+
+all: $(TARGET)
+
+clean:
+	rm tap_bpf_program.o $(TARGET)
+
+tap_bpf_program.o: tap_bpf_program.c
+	$(CLANG) $(CLANG_OPTS) -emit-llvm -c $< -o - | \
+	llc -march=bpf -filetype=obj -o $@
+
+$(TARGET): tap_bpf_program.o
+	python3 bpf_extract.py -stap_bpf_program.c -o $@ $<
drivers/net/tap/bpf/bpf_api.h new file +275 -0

275 lines not on this page · raw message

drivers/net/tap/bpf/bpf_elf.h new file +53 -0

53 lines not on this page · raw message

drivers/net/tap/bpf/bpf_extract.py new file +86 -0

86 lines not on this page · raw message

drivers/net/tap/bpf/tap_bpf_program.c renamed from drivers/net/tap/tap_bpf_program.c +6 -4
similarity index 96%
rename from drivers/net/tap/tap_bpf_program.c
rename to drivers/net/tap/bpf/tap_bpf_program.c
index 20c310e5e7..d65021d8a1 100644
@@ -14,9 +14,10 @@
 #include <linux/ipv6.h>
 #include <linux/if_tunnel.h>
 #include <linux/filter.h>
-#include <linux/bpf.h>
 
-#include "tap_rss.h"
+#include "bpf_api.h"
+#include "bpf_elf.h"
+#include "../tap_rss.h"
 
 /** Create IPv4 address */
 #define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \
@@ -56,6 +57,7 @@ __section("cls_q") int
 match_q(struct __sk_buff *skb)
 {
 	__u32 queue = skb->cb[1];
+	/* queue is set by tap_flow_bpf_cls_q() before load */
 	volatile __u32 q = 0xdeadbeef;
 	__u32 match_queue = QUEUE_OFFSET + q;
 
@@ -75,14 +77,14 @@ struct ipv4_l3_l4_tuple {
 	__u32    dst_addr;
 	__u16    dport;
 	__u16    sport;
-} __rte_packed;
+} __attribute__((packed));
 
 struct ipv6_l3_l4_tuple {
 	__u8        src_addr[16];
 	__u8        dst_addr[16];
 	__u16       dport;
 	__u16       sport;
-} __rte_packed;
+} __attribute__((packed));
 
 static const __u8 def_rss_key[TAP_RSS_HASH_KEY_SIZE] = {
 	0xd1, 0x81, 0xc6, 0x2c,
drivers/net/tap/tap_rss.h +1 -1
index 48c151cf6b..dff46a012f 100644
@@ -35,6 +35,6 @@ struct rss_key {
 	__u32 key_size;
 	__u32 queues[TAP_MAX_QUEUES];
 	__u32 nb_queues;
-} __rte_packed;
+} __attribute__((packed));
 
 #endif /* _TAP_RSS_H_ */
Signature · 1 line
2.41.0
#20 lore raw

PATCH v6 2/3 net/tap: Fixed RSS algorithm to support fragmented packets

In reply to Stephen Hemminger

From: Madhuker Mythri <[email protected]>

As per analysis on Tap PMD, the existing RSS algorithm considering 4-tuple(Src-IP, Dst-IP, Src-port and Dst-port) and identification of fragment packets is not done, thus we are seeing all the fragmented chunks of single packet differs in RSS hash value and distributed across multiple queues.
The RSS algorithm assumes that, all the incoming IP packets are based on L4-protocol(UDP/TCP) and trying to fetch the L4 fields(Src-port and Dst-port) for each incoming packet, but for the fragmented chunks these L4-header will not be present(except for first packet) and should not consider in RSS hash for L4 header fields in-case of fragmented chunks. Which is a bug in the RSS algorithm implemented in the BPF functionality under TAP PMD.

So, modified the RSS eBPF C-program and generated the structure of C-array in the 'tap_bpf_insns.h' file, which is in eBPF byte-code instructions format.

Bugzilla Id: 870

---
 drivers/net/tap/bpf/tap_bpf_program.c | 47 ++++++++++++++++++++++-----
 1 file changed, 39 insertions(+), 8 deletions(-)
drivers/net/tap/bpf/tap_bpf_program.c +39 -8
index d65021d8a1..369c7b107f 100644
@@ -19,6 +19,8 @@
 #include "bpf_elf.h"
 #include "../tap_rss.h"
 
+#include "bpf_api.h"
+
 /** Create IPv4 address */
 #define IPv4(a, b, c, d) ((__u32)(((a) & 0xff) << 24) | \
 		(((b) & 0xff) << 16) | \
@@ -133,6 +135,8 @@ rss_l3_l4(struct __sk_buff *skb)
 	__u8 *key = 0;
 	__u32 len;
 	__u32 queue = 0;
+	bool mf = 0;
+	__u16 frag_off = 0;
 
 	rsskey = map_lookup_elem(&map_keys, &key_idx);
 	if (!rsskey) {
@@ -157,6 +161,8 @@ rss_l3_l4(struct __sk_buff *skb)
 			return TC_ACT_OK;
 
 		__u8 *src_dst_addr = data + off + offsetof(struct iphdr, saddr);
+		__u8 *frag_off_addr = data + off + offsetof(struct iphdr, frag_off);
+		__u8 *prot_addr = data + off + offsetof(struct iphdr, protocol);
 		__u8 *src_dst_port = data + off + sizeof(struct iphdr);
 		struct ipv4_l3_l4_tuple v4_tuple = {
 			.src_addr = IPv4(*(src_dst_addr + 0),
@@ -167,11 +173,25 @@ rss_l3_l4(struct __sk_buff *skb)
 					*(src_dst_addr + 5),
 					*(src_dst_addr + 6),
 					*(src_dst_addr + 7)),
-			.sport = PORT(*(src_dst_port + 0),
-					*(src_dst_port + 1)),
-			.dport = PORT(*(src_dst_port + 2),
-					*(src_dst_port + 3)),
+			.sport = 0,
+			.dport = 0,
 		};
+		/** Fetch the L4-payer port numbers only in-case of TCP/UDP
+		 ** and also if the packet is not fragmented. Since fragmented
+		 ** chunks do not have L4 TCP/UDP header.
+		 **/
+		if (*prot_addr == IPPROTO_UDP || *prot_addr == IPPROTO_TCP) {
+			frag_off = PORT(*(frag_off_addr + 0),
+					*(frag_off_addr + 1));
+			mf = frag_off & 0x2000;
+			frag_off = frag_off & 0x1fff;
+			if (mf == 0 && frag_off == 0) {
+				v4_tuple.sport = PORT(*(src_dst_port + 0),
+						*(src_dst_port + 1));
+				v4_tuple.dport = PORT(*(src_dst_port + 2),
+						*(src_dst_port + 3));
+			}
+		}
 		__u8 input_len = sizeof(v4_tuple) / sizeof(__u32);
 		if (rsskey->hash_fields & (1 << HASH_FIELD_IPV4_L3))
 			input_len--;
@@ -184,6 +204,9 @@ rss_l3_l4(struct __sk_buff *skb)
 					offsetof(struct ipv6hdr, saddr);
 		__u8 *src_dst_port = data + off +
 					sizeof(struct ipv6hdr);
+		__u8 *next_hdr = data + off +
+					offsetof(struct ipv6hdr, nexthdr);
+
 		struct ipv6_l3_l4_tuple v6_tuple;
 		for (j = 0; j < 4; j++)
 			*((uint32_t *)&v6_tuple.src_addr + j) =
@@ -193,10 +216,18 @@ rss_l3_l4(struct __sk_buff *skb)
 			*((uint32_t *)&v6_tuple.dst_addr + j) =
 				__builtin_bswap32(*((uint32_t *)
 						src_dst_addr + 4 + j));
-		v6_tuple.sport = PORT(*(src_dst_port + 0),
-			      *(src_dst_port + 1));
-		v6_tuple.dport = PORT(*(src_dst_port + 2),
-			      *(src_dst_port + 3));
+
+		/** Fetch the L4 header port-numbers only if next-header
+		 * is TCP/UDP **/
+		if (*next_hdr == IPPROTO_UDP || *next_hdr == IPPROTO_TCP) {
+			v6_tuple.sport = PORT(*(src_dst_port + 0),
+				      *(src_dst_port + 1));
+			v6_tuple.dport = PORT(*(src_dst_port + 2),
+				      *(src_dst_port + 3));
+		} else {
+			v6_tuple.sport = 0;
+			v6_tuple.dport = 0;
+		}
 
 		__u8 input_len = sizeof(v6_tuple) / sizeof(__u32);
 		if (rsskey->hash_fields & (1 << HASH_FIELD_IPV6_L3))
Signature · 1 line
2.41.0